c++ - 指向字符串的指针大小与字符串大小的差异

标签 c++ string pointers sizeof

<分区>

Possible Duplicate:
Question about pointers and strings in C

#include<stdio.h>

int main()   
{    
char *str1="abcd";  
char str2[]="abcd";  
printf("%d %d %d\n",sizeof(str1),sizeof(str2),sizeof("abcd"));  
return 0;
}

为什么这段代码对 sizeof(str2)sizeof("abcd") 给出了相同的答案,即使 str2 非常理想一个指向字符串的指针,如 str1 ,所以答案应该是 4 4 5

Ideone 上的代码: http://ideone.com/za8aV

答案:4 5 5

最佳答案

字符数组不是char 指针。尽管数组在传递给函数时确实会衰减为指针,但它们本质上是不同的东西(具体来说,编译器在编译时知道它们的确切长度)。对于四字符字符串,您看到 5 的原因是字符串文字为终止零保留了一个 char。另一方面,4 是系统相关的:在具有 32 位指针的系统上,您将看到 4,而在具有 64 位指针的系统上,您将看到 8

关于c++ - 指向字符串的指针大小与字符串大小的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12182772/

相关文章:

c++ - 如何设置允许光标移动的区域/矩形?

java - 修改方法返回值的模式

c - 在 32 位 C 编译器上,sizeof(*NULL) 如何等于 1?

c++ - 指向常量数组的指针的正确定义是什么?

c++ - 如何在 OpenCV 中保存检测到的对象的图像?

c++ - BOOST_FOREACH 可以定制为指针类型吗?

string - 特殊交织字符串编码

c++ - 如何检查字符串是否超过 256 个字节?

c - 从链表中删除选择的节点

c++ - 按照初学者 cv_bridge 教程,不起作用