sizeof在数组和指针中的区别

2021-01-11 16:59:27 字数 1288 阅读 2696

1楼:金色潜鸟

sizeof 是运算符,用于计算 某种变量类型 或 某变量 占内存的 字节数。

可用于普通的 int, float,double,char 等类型,也可用于 class, struct, union 等类型。

用于数组名,则测定以这个名字命名的数组 占内存的 字节数。

用于指针,则测定指针自身 占内存的 字节数。通常计算机,指针自身 占内存都是4字节。

例如:double x[4];

double *p=x;

printf("%d\n",sizeof(double));

printf("%d %d\n",sizeof(x), sizeof(p));

输出:8 //double 型占 8字节

32 4 //数组x 占32字节 ,指针 p 占 4字节

c语言中数组名和指针的区别 及 sizeof用法

2楼:匿名用户

指针需要给一个明确的指向才能使用,否则就是一个野指针。

数组名就是一个有明确指向的指针。

数组名有点类似于const指针。比如:

int a[10]=;

a就类似于const int * p = a;

另外,指针的sizeof就是4字节(视系统而定,一般4字节);数组名的sizeof就是这个数组的整个size。

比如:sizeof(p) = 4; sizeof(a) = 10*sizeof(int);

c语言中数组名和指针的区别

3楼:匿名用户

数组在当作参数传递时,可以当作指针;当然,参数传递相当于赋值操作,所以用指针来接受数组的值也是可以的。

除此之外,指针就是指针,数组就是数组,一点也不一样,例如1,数组名不能作为左值,即不能被赋值,也不能进行++ --操作2,sizeof 数组名 和 sizeof 指针 不同

4楼:

数组名本质上就是个指针,也就是地址,但是它是一个常指针,是个固定值,而指针是是指针变量的简称,是个变量,这个变量存放的是地址值,它的值是可以改变的。例如:

int*p;

inta,b;

p=&a;//把变量a的地址赋值给指针p,那么指针p就指向了变量a的内存单元

p=&b;//把变量b的地址赋值给指针p,那么指针p就指向了变量b的内存单元

inta[10];//整型数组,数组名a本质上是一个地址,是首元素地址,它是一个固定值,不能对它进行赋值操作。

c语言中数组名和指针变量的区别,C语言中数组名和指针的区别

1楼 销 数组名除了sizeof会返回数组大小,其他的实况下是相当于一个指针常量无区别的 指针常量也就是说,不能改变数组名的值,比如int a 10 a a a a 10等都是非法的 c语言中数组名和指针的区别 2楼 匿名用户 数组在当作参数传递时,可以当作指针 当然,参数传递相当于赋值操作,所以用...

“指针的类型”和“指针所指向的类型”有什么区别

1楼 匿名用户 你说的对,在32机器里,指针的容量就是4字节的。指针的类型实际上就是指针所指向的变量的类型。 为什么在声明指针的时候要声明出它所指向的变量的类型呢? 因为,例如 int p 在以后的程序中有可能要做 int a p的操作,所以 ,即取值操作就要知道p所指向的空间里存放的变量的类型,根...

C语言中的“行指针”与“元素指针”有什么区别

1楼 键盘雀跃 int a 4 1 2 3 4 a 0 a 1 a 2 a 3 a是一维数组名,代表数组的首地址 也就是a 0 a 1 指针移动2个字节,指向下一个数组元素,就是a 1 int a 3 4 a 4 或a 4 或a 3 4 都可以表示行指针 操作a是二维数组名,代表二维数组的首地址,也...