计算string 长度:
思路:对于字符逐个数,直到'\o'结尾处;
计算string 长度:
对于字符逐个数,直到'\o'结尾处;
int stringLength(char* str){
char *p;
p=str;
int i =0;
for(i=0;*p != '\0';p++){
i++;
printf("%c",*p);
}
return i;
}
使用指针更方便:
int stringLength(char *str){
char *p = str;
while( *p != '\0')
p++;
return p - str;
}
计算数组长度:
在代码块中计算局部变量 charArray[] 长度:
思路: 计算 charArry[] 所占内存字节,除与单个元素所占字节:得出一共有多少个元素,即数组长度。
char charArray[] = {'y','u','e','k','i','n','g'};
int charLength = sizeof(charArray) / sizeof(*charArray);
以上对局部变量数组进行计算是可以的
但是如果对函数参数进行计算就会出现 一下问题代码:
/**
* 这个是个错误的函数
* @param ai 传入函数时是一个 指向 ai 的指针变量,而不是ai数组常量
* @return int len = sizeof(ai) / sizeof(&ai);
*/
int intArrayLength(int ai[]){
//引起错误的原因是因为
//int ar[] 被传入参数时,实际上传入的是个 指向ai数组的一个int类型 指针变量int *ai
//而不是数组常量 int ai[]本身,所以 sizeof(ai) 计算的是int类型指针 int *ai 所占内存。
int len = sizeof(ai) / sizeof(*ai);
return len;
}