c语言字符串指针
的有关信息介绍如下:问题补充说明:c语言中定义字符串指针,然后指针名不是指向字符串的第一个字符吗?即指针名是指向第一个字符的地址,但为什么还能作为strlen函数的参数?能用char*s=“abc”;strlen(s)测出s的长度... c语言中定义字符串指针,然后指针名不是指向字符串的第一个字符吗?即指针名是指向第一个字符的地址,但为什么还能作为strlen函数的参数?能用char *s=“abc”;strlen(s)测出s的长度。 展开
你的说法有些混乱——C没有字符串来自变量,自然不可能有字符串的指针;C中只有数组的指针和数组首指针,一维数组的首指针是指向第一个元素的指针,类型是元素的类型,操作一维数组的指针就是这个“首指针”;而数组指针是二级360问答指针,与“首指针”有很多不同,最显著的是首指针+1是第二个元素(下标为1)的地址,而数组指针+1就跑到这个一维数组结束后的那个地方了(要跳过这个一维数组的所有元素)。“即指针名是指向第一个字符的地址”这个说法也不对,应该是“指针名(严格应该叫数组名)是指向第一个字符的”,或“指针名的值是第一个字符的地址”。至于为什么“能用char*s=“abc”;strlen(s)测出s的长度”,那是由于strlen这个函数从()中的指针源味陆王完于相未的地址开始一个单元一个单合为常元(因为一个字符是一个8位单元或叫空间)地向后数,一直数到'\0'为止,把不计'\0'这个单元的累加值返了,所以就得到了“字符串”的长度。这和printf("%s\n",p);能把p为首地址的“字符串”完全输出是一样的道理。