sizeof在不同函数中输出不同?望解答[face]emoji:026.png[/face]

sizeof在不同函数中输出不同?望解答[face]emoji:026.png[/face]

第一个输出的是字符串的长度,要算上末尾的\0,所以是10;

第二个传递的是指针,所以sizeof(str)是求指针的长度,64位系统里是8

首先sizeof是运算符,表示的是“所指向内存的大小”,那么来看看第一个第二个指向的是什么内存。第一个,char str[]="nishishei".等价于声明char str[10];那么这个str遍为 char [10]。第二个,str作为函数的入参,之所以在函数里面你能使用strlen函数,完全是你默认了传进来的是个"文本",那么strlen就帮你往后数,一直数到'\0'位置,但是此函数并不知道传进来是个字符串,而只知道传进来了一个地址,所以char str[]的声明等价于char* str,sizeof(str) = 64位下的指针类型的长度:8。这也是新手常犯的错误,以后要多注意