星期四, 3月 02, 2017
[ C ] string 和 string point 佔多少空間
char str1[] = "12345\n";
char *p1 = str1;
//會佔7byte,因為有12345和'\n'和'\0'這七個byte
//任何字串不要忘了'\0'
printf("sizeof(str1) :[%d]\n",sizeof(str1));
//這會佔8個byte,但他會依照不同的機器有不同的結果,
//在32 bit機器是佔4 byte
//在64 bit機器是佔8 byte
//Size of a pointer depends on architecture and, typically, 4-byte for 32 bit archs and 8-byte for 64 bit ones.
printf("sizeof(char *) :[%d]\n",sizeof(char *));
//結果和上個一樣因為他是用char *宣告。
printf("sizeof(p1) :[%d]\n",sizeof(p1));
//會佔1 byte,他相當於是p[0]的意思,佔一個字元
//同於 sizeof(char)
//char佔了1 byte
printf("sizeof(*p1) :[%d]\n",sizeof(*p1));
//所以我也可以印出他數字
//加1是印出2,加2是印出3
printf(" p1 :[%c]\n",*(p1+1));
//以下算出來都是字的長度
printf("strlen(str1) :[%d]\n",strlen(str1));
printf("strlen(str1) :[%d]\n",strlen(p1));
#####output#######
sizeof(str1) :[7]
sizeof(char *) :[8]
sizeof(p1) :[8]
sizeof(*p1) :[1]
p1 :[1]
strlen(str1) :[6]
strlen(str1) :[6]
Ref.
Ref_2
Ref_3
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言