学习C语言的第25天

发布时间:2024年01月22日

字符指针作为函数参数

? 计算字符串长度

一、数组

#include<stdio.h>
int my_strlen(char*ch)
{
    int i=0;
    while(ch[i] !='\0')
    {
        i++;
    }
    return 0;
}
int main()
{
    char ch[]="hello world";
    int len=my_strlen(ch);
      printf("%s\n",ch);//打印原理:%s会依次遍历ch后的非0地址
    printf("%d\n",len);
    return 0;
}
输出结果:hello world
    	11

二、指针

#include<stdio.h>
int my_strlen(char*ch)
{
	char*p=ch;
	while(*p!='\0')
	{
		p++;
	}
	return p-ch;//步长
 } 
 int main()
 {
 	char ch[]="hello world";
 	int len=my_strlen(ch);
 	printf("%d\n",len);
 	return 0;
 }

const修饰的指针变量

const修饰什么,什么就不能修改,但可以间接修改

#include<stdio.h>
int main()
{
    const inta=10;//const修饰a,a不可以修改
    //a=100 err
    //通过指针间接修改变量a的值
    int*p=&a;
    *p=100;
    return 0;
}

const修饰指向常量的指针

? 可以修改指针变量的值,不可以修改指针变量指向内存空间的值

#include<stdio.h>
int main()
{
    char ch1[]="hello";
    char ch2[]="world";
    const char*p=ch1;
    //*p='m'  err
    //p[2]='m' *(p+2)='m'  err
    p=ch2;//可修改
    printf("%s\n",p);
    return 0;
}
输出结果:world

利用多级指针进行间接修改

#include<stdio.h>
int main()
{
     char ch1[]="hello";
    char ch2[]="world";
    const char*const p =ch1;
    //* p同时被修饰,均不可以进行修改
    //p=ch2  err
    //*p='m'  err
    //利用二级指针进行间接修改
    char **p1=&p;
    *(*p+1)='m';
    return 0;
}
输出结果:hmllo
文章来源:https://blog.csdn.net/2301_79690656/article/details/135736005
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。