当前位置:首页 > 科技 > 正文

数组名字是指针吗,数组名是指针常量吗

数组名字是指针吗,数组名是指针常量吗

数组名的本质也是一个指针么? 1、数组名是个地址,不是指针, 它是个常量,不是变量。int a[3] = {1, 2, 3};因为a是个地址,所以我们可以通过 *(p+...

数组名的本质也是一个指针么?

1、数组名是个地址,不是指针, 它是个常量,不是变量。int a[3] = {1, 2, 3};因为a是个地址,所以我们可以通过 *(p+2) 来访问a[3]。因为a是个地址常量,不是指针,我们不可以使用*a++这样的语句。

2、数组首地址数组第一个元素的地址。数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。

3、读者可以编译之,发现编译出错。原因在于,虽然数组名可以转换为指向其指代实体的指针,但是它只能被看作一个指针常量,不能被修改。

4、因此从编译角度说,任何变量名都是指针,所以指针数组名当然也是指针,最简单的int a,这个“a”本身也是个指针。当访问任何变量时,编译器会安排先取地址,然后根据变量类型决定是否进一步取值,即隐式转换。

5、数组指针是指向数组地址的指针,其本质为指针;指针数组是数组元素为指针的数组(例如 int *p[4],定义了p[0],p[1],p[2],p[3]三个指针),其本质为数组。数组指针的使用在某些情况下与指针数组很相似,要注意区别。

6、这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的内容。那么要引用a[i],你可以有很多种写法,比如*(a+i),(p+i),p[i],都是等效的。

二维数组名是不是一个“指针”?

二维数组的数组名代表了一个指针,这个指针指向的是一维数组,不是另一个指针。

数组名就是一个指针常量,它代表数组元素在内存相关信息。C语言 是一门通用计算机编程语言,应用广泛。

不可以,二维数组要看做“数组的数组”。(以如下定义为例:int a[4]; int * p;)给你个对于指针和数组的正确理解吧:定义的不同:C 里,指针和数组是不同的类型,不要把数组名看做“常指针”。

二维数组名a是一个指向指针的指针。也是一个指针数组名,它含3个元素,a[0]a[1],a[2]。虽然a存储的地址是该数组首元素的地址,但它指向的并不是一个变量,而是一个指针。

你可以把二维数组看作是 一个一维数组,不过这个一维数组的所有元素都是一个一维数组。

在C语言中数组名是一个什么的常量

1、数组名是代表该数组的首地址且符合标识符书写规定的变量标识符。整个数组是以首地址开头的一块连续的内存单元。如有字符数组char c[10],设数组c的首地址为2000,也就是说c[0]单元地址为2000。

2、C语言中,数组名是一个不可变的指针常量,不能对它进行加、减和赋值运算。在C语言中规定,数组名是代表该数组的首地址且符合标识符书写规定的变量标识符。不能对它进行加、减和赋值运算。

3、数组名是一个不可变的指针常量。所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

4、错。数组名是常量,不能改变其值。二维数组名是指向行数组的指针常量。比如int a[2][3],a就是指向第一行数组[3]的指针。*a就是第一行首地址。a+1就是指向第二行数组。(a+1)就是第二行首地址。

5、数组名是来存放数组的区域是一块在栈中静态分配的内存(非static),而数组名是这块内存的代表,它被定义为这块内存的首地址。这就说明了数组名是一个地址,而且,还是一个不可修改的常量,完整地说,就是一个地址常量。

数组名是什么意思?

数组首地址数组第一个元素的地址。数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。

数组名是数组的首地址,就是数组中第一个元素的地址,是常量。常量是不能出现在赋值号=左边作为左值的。楼上的都没有解释清楚,说数组名就是指针是错误的,指针是 变量,是用来存储变量地址值的变量,而数组名是常量。

数组名是来存放数组的区域是一块在栈中静态分配的内存(非static),而数组名是这块内存的代表,它被定义为这块内存的首地址。这就说明了数组名是一个地址,而且,还是一个不可修改的常量,完整地说,就是一个地址常量。

但,我想你应该知道数组名的含义:数组名表示的是这个数组所在内存的首地址。任何一个变量都有自己的家(内存),谁家都有门牌号(地址值),一般变量的地址需要用&来取其地址,而数组变量不同,数组名就表示这个地址。

指针数组的数组名就是该指针数组首元素的地址的别名。比如,一个人可以叫王小二,也有叫它小二,或者小王,其实都是指同一个人。

意思就是一维数组c++:int *p = new int[10];这个空间在不用时需要用户自己手动释放,要不内存会溢出。

求助C语言判断题

1、错。数组名是常量,不能改变其值。二维数组名是指向行数组的指针常量。比如int a[2][3],a就是指向第一行数组[3]的指针。*a就是第一行首地址。a+1就是指向第二行数组。(a+1)就是第二行首地址。

2、对。while(n=0.1)中,n=0.1是赋值操作,不是比较操作。

3、选择题 在C语言程序设计中,语句和数据定义是以( B )结束。A.句号 B.分号 C.逗号 D.括号下列字符串是标识符的是( A )A._HJKLB.9aC.forD.LINE 13.一个C程序的执行是从(A )。

4、错,实型是占4个字节的。错,字符占一个字节,但是汉字是占2个字节。错,结果是D,因为i/2=1;对应case 1。错,与第三题类似。

5、。正确,一个程序中必须有主函数main(),而且有且只有一个。正确。

6、一个C程序必须有一个main()函数。(main相当于作文题目)若有定义:int a; 则scanf(%d,a);可以给变量a赋值。这是不对的,虽然用户输入后,我们就知道了它的值。但没有&符号,我们就不知道a变量如何怎么被赋值。

【C】数组名在哪些情况下不是常量指针?

1、错。数组名是常量,不能改变其值。二维数组名是指向行数组的指针常量。比如int a[2][3],a就是指向第一行数组[3]的指针。*a就是第一行首地址。a+1就是指向第二行数组。(a+1)就是第二行首地址。

2、由于b是指针,无论是否指向a,指向什么,sizeof(b)等于sizeof(int),32位平台上等于4。以上讨论的问题引发的关于数组名称的问题:数组名本身是个地址常量,但是某些特殊情况下它的语义可以发生改变。

3、所以a[0] =1,a[1]=2;a[2]=3;数组什么时候分配内存的问题 只要定义了一个数组,操作系统就自动给这个数组分配了空间 如a[5] = {1,2,3,4,5};分配了5个连续单元的内存空间 希望你能看懂。

最新文章