在gcc 4.2.1上指向2d数组的指针的大小为8的原因是什么?

这是一个交流程序

#include<stdio.h>
main()
{
 int(*p)[3][4];
 printf("size of p= %d",sizeof(p));
 printf("size of *p= %d",sizeof(*p));
 return 0;
}

我可以理解(* p)的大小应该是数组的总大小,在这种情况下为48个字节。但是gcc版本4.2.1给出了p = 8的大小。

重力

因为指针的值是一个地址,所以它的值不等于它所指向的值。否则,指针将不是指针,它们将只是正则变量,因此无用。

如果您使用的是64位计算机,则指针的大小将始终为8个字节。

编辑:如果您想知道为什么sizeof(*p)8它,那是因为*p求值它所指向的元素数组中的第一个(除非您增加它)元素。所以*p= p[0]*(p+n)=p[n]

因此,sizeof(*p)始终等于类型p所指向的大小

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

指向1D / 2D数组的指针的基本类型是什么,为什么需要双重解引用?

来自分类Dev

指向未知大小的现有2d数组的指针?

来自分类Dev

* p的大小,其中p是指向2D数组的指针

来自分类Dev

2D数组(指向指针的指针)

来自分类Dev

malloc和gcc优化2

来自分类Dev

为什么在gcc-4.9.1-4ubuntu2中没有手动输入std :: vector?

来自分类Dev

C:指向2d数组的指针

来自分类Dev

存储指向2D数组的指针

来自分类Dev

指向2D数组的指针

来自分类Dev

用指向固定大小数组的指针分配2D数组

来自分类Dev

Amazon EC2 Ubuntu安装GCC

来自分类Dev

在C中交换2d数组(指向指针的指针)

来自分类Dev

2D数组不会衰减到指向指针的指针

来自分类Dev

指向指针(2D数组)的指针作为输入参数

来自分类Dev

如何创建指向2D指针数组的指针-C

来自分类Dev

2D数组不会衰减到指向指针的指针

来自分类Dev

在C中交换2d数组(指向指针的指针)

来自分类Dev

将4d numpy数组重塑为2d数组,同时保留数组位置

来自分类Dev

在C ++中的2D数组中声明指向1D数组的指针

来自分类Dev

为什么使用GCC编译器的sizeof('3')== 4?

来自分类Dev

2D数组作为指向char数组的指针

来自分类Dev

2d数组的malloc可在GCC中工作,但不能在Visual C ++中工作

来自分类Dev

在“ L [2:4]”中,“ 2:4”是什么?

来自分类Dev

如何在numpy中将4D数组重塑为2D数组

来自分类Dev

Where is the "2+2" in this Assembly code (translated by gcc from C)

来自分类Dev

为什么在C ++中声明动态2D数组时使用指针指向?

来自分类Dev

指向C中的2D数组的指针

来自分类Dev

声明指向2D枚举数组的指针

来自分类Dev

指向2D数组C,C ++的指针

Related 相关文章

热门标签

归档