指针作为函数参数来传递的时候,传递的仅仅只是指针所指向的地址,在函数体内部,不能直接用sizeof求长度,要不然结果就是类型的大小,而不是你的字符串的长度。。代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void len_fun(char *str);
void main()
{
char str[] = {"135a65Ac"};
printf("str的长度为:%d\n",sizeof(str)); //这个是真正的字符串长度
len_fun(str);
system("pause");
}
void len_fun(char *str)
{
int m=sizeof(str);
printf("str的长度为:%d\n",m); //这个求的不是字符串长度,而是指针类型的长度,32位机器上指针的长度都为4
}
如果想要在函数体内部,访问传递来的指针所指向的内容,就要把指针所指向的内容长度也作为参数传递进来,否则是无法访问的。。 代码如下:
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4
5 void len_fun(char *str, int length);
6
7 void main()
8 {
9 char str[] = {"135a65Ac"};
10 printf("str的长度为:%d\n",sizeof(str)); //这个是真正的字符串长度
11 len_fun(str,sizeof(str));
12 system("pause");
13 }
14
15 void len_fun(char *str, int length)
16 {
17 int m=sizeof(str);
18 char *p=str;
19 for(int i=0;i<length;i++)
20 printf("%c ",*(p+i));
21 printf("\n");
22 printf("str的长度为:%d\n",m); //这个求的不是字符串长度,而是指针类型的长度,32位机器上指针的长度都为4
23 }
浙公网安备 33010602011771号