? 计算字符串长度
一、数组
#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修饰什么,什么就不能修改,但可以间接修改
#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