正确答案:B解析:C语言中,数组名本身就是一个指针,指向数组内存的起始位置,选项A正确;可以将一个指针指向一个同类型的数组,选项C正确;指针指向一个数组后,可以通过移动指针,指向该数组中的任意一个元素,选项D正确;已经定义的数组被分配了内存空间,所以可以读入数据到数组中,未赋初值的指针没有分配内存空间,所以不...
在C语言中,数组名代表数组的首地址,也就是数组第一个元素的内存地址。数组名本身是一个常量表达式,其值不能改变(即不能对数组名进行赋值操作)。例如: c int arr[10]; 这里,arr就是数组名,它代表数组arr的首地址。 数组名与指针的关系: 数组名在很多情况下可以像指针一样使用,比如作为函数参数传递时,数组...
C语言中,数组名和指针之间有着密切的关系,但它们并不完全相同。理解它们之间的区别和联系对于掌握C语言的内存管理和数据结构至关重要。数组名是一个常量指针,指向数组的起始地址,而指针变量可以被重新赋值。 1、数组名和指针的关系 数组名是一个标识符,代表数组的首地址,即数组第一个元素的地址。指针是一个变量,...
数组名的本质上是指向数组中第一个元素的指针常量,也可以说是一个指向自己地址的指针常量。它的类型取决于数组元素的类型,如果它们是int类型,那么数组名的类型就是"指向init的指针常量"。请不要根据这个事实得出数组名和指针是相同的结论,数组名在某些场合具有和指针完全不同的特征。也就是说,数组名是一个特殊指针...
1、数组名不是指针 我们先来推翻"数组名就是指针"的说法,用反证法。 证明 数组名不是指针 假设:数组名是指针; 则:pStr和str都是指针; 因为:在WIN32平台下,指针长度为4; 所以:第6行和第7行的输出都应该为4; 实际情况是:第6行输出10,第7行输出4; ...
也就是说它的“值”是一个数组的地址。通常我们都把数组名作为数组的地址对待,或者数组首元素的地址作为数组的地址对待,这两者在一般情况下是没有区别的(仅在一般情况下,此处不展开)。因此,我们很容易就可以写出给数组指针赋值的语句,比如用数组名给数组指针pointer赋值:int (*pointer)[3];int array[3];...
2 既然数组名是指针了,那么可不可以将数组名赋给一个指针?然后用这个指针来操作整个数组呢?答案是肯定的。3 数组名是指针,可以使用a[i]这样的操作,那么同类型指针p可不可以使用p[i]来代替 *(p+i) 呢?答案是肯定的。4 解释一下,指针进行p+1操作对于不同类型的p是不同的,具体看存储不同类型的...
c语言中的数组名的本质是什么,数组名是指针吗? 1、数组名是数组元素的首地址 #include <stdlib.h> #include <stdio.h> void main() { int a[10] = {1, 2, 3, 4, 5, 6, 7, 8,9, 10}; printf("a:%d &a:%d :%d \n", a, &a); ...
= 指针。数组名是一个标识符,它标识出我们之前申请的一连串内存空间,而且这个空间内的元素类型是相同的——即数组名代表的是一个内存块及这个内存块中的元素类型。只是在大多数情况下数组名会“退化”(C标准使用的decay和converted这两个词)为指向第一个元素的指针。而指针不是一种聚合类的数据结构,它保存着某一...
一,数组a【】的数组名是地址常量 *a是常指针(方向固定指向的地址固定) 比如int a【】={1,2,3} 这里定义了一个数组a 这里数组名a(或者是*a)就是一个常指针也就是这个指针方向不能改变 比如我们不能int p=3 然后让 a=&p 也不能进行 a++这种操作 ...