今天在写代码时,要获取一个字符串的长度 ,代码如下,sizeof(*p)的结果是1,百思不得其解,后来想到p是字符串数组的第一个元素的地址,*p居然是取得第一个元素。哈哈
#include <stdio.h>
#include <string.h>
int main ()
{
int a=10;
int arr[]={1,2,3};
printf("*arr = %d", *arr);
char str[]="hello";
int len_a = sizeof(a);
int len_arr = sizeof(arr);
int len_str = sizeof(str);
printf("len_a=%d,len_arr=%d,len_str=%d\n",len_a,len_arr,len_str);
char *data = "hello";
printf("%ld %ld %ld\n", sizeof(data), sizeof(*data), strlen(data));
printf("%d", *data);
return 0;
}
,上述代码输出如下:
*arr = 1len_a=4,len_arr=12,len_str=6
8 1 5
104
最后*data输出为104,即h的ASCII码