sizeof(数组名) 与 sizeof(指针)

转载 2016年10月14日 12:55:43


引用知乎上的一个回答,很直观

char a[]="hello";
char *bPtr;
char b[]="good bye!";
bPtr=b;

printf("%d\n",sizeof(a)); // sizeof(char[6])

printf("%d\n",sizeof(&b)); // sizeof(char(*)[10])
printf("%d\n",sizeof(*b)); // sizeof(char)
printf("%d\n",sizeof(b)); // sizeof(char[10])

printf("%d\n",sizeof(&bPtr)); // sizeof(char**)
printf("%d\n",sizeof(*bPtr)); // sizeof(char)
printf("%d\n",sizeof(bPtr)); // sizeof(char*)

作者:Sunchy321
链接:http://www.zhihu.com/question/32170922/answer/54929467
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

下面解密上面的答案,在电脑上实际运行过!
printf("%d\n",sizeof(a)); // sizeof(char[6]) //6

printf("%d\n",sizeof(&b)); // sizeof(char(*)[10]) //4
printf("%d\n",sizeof(*b)); // sizeof(char) //1
printf("%d\n",sizeof(b)); // sizeof(char[10]) //10

printf("%d\n",sizeof(&bPtr)); // sizeof(char**) //4
printf("%d\n",sizeof(*bPtr)); // sizeof(char) //1
printf("%d\n",sizeof(bPtr)); // sizeof(char*) //4






相关文章推荐

由sizeof()引出的对数组名和指针的新认识

在C++中,数组名和指针有很多类似的地方,甚至很多时候,数组名与指针可以互相替换,我也一直以为两者没什么值得注意的区别,直到看到了一道题,才发觉自己知识的匮乏。 void UpperCase(char...

有关sizeof 数组名的问题 数组名和指针的深入理解(C++)

魔幻数组名 请看程序(本文程序在WIN32平台下编译): #include using namespace std; int main() { char str[1...

别混淆了sizeof(数组名)和sizeof(指针)

我们在挨个儿输出一个数组中的元素时,最常用的就是用一个for循环来实现,简单了事。比如类似下面的代码片段: for(i = 0; i { printf(“数组元素是%d”, 数组[i]); }...

sizeof(数组名)和sizeof(指针)的区别

在c/c++中我们一般都用 sizeof(数组名)/sizeof(数组元素类型) 来计算数组的长度,其中 sizeof(数组名) 计算的是数组占用的存储大小。同时,一般我们认为数组名和指针就是一回事,...

C、C++字符数组,字符指针,sizeof,strlen总结

对于字符数组与字符指针: 1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写"abc",那么编译器帮你存储的是"abc\0". 2. 字符串直接量作为字符...
  • e_wsq
  • e_wsq
  • 2013年10月22日 19:35
  • 524

内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结

堆和栈的区别 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的...

内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结

堆和栈的区别 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 ...

字符数组,字符指针,Sizeof总结

1.以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写   "abc",那么编译器帮你存储的是"abc\0" 2."abc"是常量吗?答案是有时是,有时不是。 ...

字符数组,字符指针,字符串常量以及其sizeof的一些总结

1.     以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符。 如在代码中写"abc",那么编译器帮你存储的是"abc\0"。 2.     "abc"是常量吗? 答案是有时是...

内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结

堆和栈的区别 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sizeof(数组名) 与 sizeof(指针)
举报原因:
原因补充:

(最多只允许输入30个字)