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...
  • u010497938
  • u010497938
  • 2015年08月21日 15:55
  • 585

sizeof(数组名)和sizeof(指针) .

在做这道题时: 32位环境下,int *p=new int[10];请问sizeof(p)的值为() A、4              B、10              C、40        ...
  • likika2012
  • likika2012
  • 2014年10月13日 09:14
  • 1507

数组名a、数组名取地址&a以及数组大小sizeof(a)

观察下面的程序: #include int main(void) { int i, a[2]={1,2}; int *p; int (*pa)[2]; printf("...
  • IvaanLove
  • IvaanLove
  • 2015年07月29日 12:42
  • 319

指针的大小--sizeof问题和sizeof使用规则

 1、什么是sizeof   首先看一下sizeof在msdn上的定义:   The sizeof keyword gives the amount of storage, in b...
  • luguifang2011
  • luguifang2011
  • 2014年10月11日 09:04
  • 2503

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

在做这道题时: 32位环境下,int *p=new int[10];请问sizeof(p)的值为() A、4              B、10              C、40          ...
  • wangzhida2008
  • wangzhida2008
  • 2017年06月26日 15:06
  • 92

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

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

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

在c/c++中我们一般都用 sizeof(数组名)/sizeof(数组元素类型) 来计算数组的长度,其中 sizeof(数组名) 计算的是数组占用的存储大小。同时,一般我们认为数组名和指针就是一回事,...
  • u012707739
  • u012707739
  • 2017年07月22日 14:09
  • 561

sizeof对字符数组字符串使用

#include using namespace std; void main() { char a[]={'a','b','c'}; //不是以字符串形式初始化,因此没有添加/0标志...
  • u010630958
  • u010630958
  • 2014年07月17日 09:02
  • 655

每日一c,.用strlen(),sizeof() 及空指针的梳理(三)

时间:2017/06/05 11:30 一.用strlen()求字符串的长度及与sizeof()的区别 库函数strlen的原型为:size_t  strlen( char const *...
  • wangweijundeqq
  • wangweijundeqq
  • 2017年06月05日 16:31
  • 346

字符串和字符数组的区别以及sizeof和strlen的区别

字符串和字符数组的区别 字符数组顾名思义就是存放字符类型的数组呗, char str[5] ; printf("元素%d\n",sizeof(str));//5 printf("元素%d...
  • u011484045
  • u011484045
  • 2015年09月05日 09:50
  • 2108
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sizeof(数组名) 与 sizeof(指针)
举报原因:
原因补充:

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