由于指针和数组初始化,Strlen 和 Sizedof 的不同输出
在 C 编程中,sizeof 和 strlen 函数提供有关大小和大小的信息分别是数据类型的长度。但是,在处理指针和数组时,这些函数的输出可能不同,从而导致混乱。
考虑以下示例:
<code class="c">char *str1 = "Sanjeev"; char str2[] = "Sanjeev"; printf("%d %d\n", strlen(str1), sizeof(str1)); printf("%d %d\n", strlen(str2), sizeof(str2));</code>
此代码的输出是:
7 4 7 8
解释:
为了进一步阐明差异,请考虑对代码进行以下修改:
<code class="c">char str2[8]; strncpy(str2, "Sanjeev", 7); char *str1 = str2; printf("%d %d\n", strlen(str1), sizeof(str1)); printf("%d %d\n", strlen(str2), sizeof(str2));</code>
在这种情况下,输出将是:
7 4 7 8
即使 str1 和 str2 现在都引用同一个字符串,sizeof(str1) 仍然返回指针的大小。这是因为 str1 是指向数组第一个元素的指针,而 str2 是字符数组。
以上是为什么 C 中的指针和数组的'strlen”和'sizeof”产生不同的输出?的详细内容。更多信息请关注PHP中文网其他相关文章!