C语言数组名也是地址能不能类似指针进行运算?

C语言中数组名就是数组num[]的首地址比如num,可以赋值给指针P。那么可以进行p++的运算,为什么不能进行num++的运算?

因为数组名num代表数组的首元素,它是一个指针常量,它的值在程序运行期间是固定不变的。所以num++(相当于num=num+1)是无法实现的。p是指针变量当然可以实现p++的运算
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-09-06
因为num已经是个常量,它的值是数组的首地址

在C语言编程中,不想用指针,是否可以用数组来代替指针??? 我觉得所有的...
数组必须是连续空间,并且空间长度受限,而指针可以指向任意空间,并且可以用指针挂载无数个结点,数组是无法代替指针的。C语言就是个玩指针的游戏,楼主还是要把指针学好啊。

c语言数组不可以当成指针使用,但是指针可以当成数组使用吗?
可以 1.指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。2.数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。3.核心思想是通过...

C语言中数组能否当指针使用
不能,在某些情况下虽然可以通用,但他们内部实现机理是不一样的,简单说,可以把数组名当做指向数组第一个元素的指针,但这个指针你并不能让它指向别的元素,比方说a[10] ,a代表 &a[0], *(a+2) 代表a[2],但是你要是用a=&b,那就错了,因为a不能指向别的元素,这么解释明白了不?望...

C语言中一维数组和指针有什么区别?
C语言中,一维数组的数组名指向了这个数组的起始地址,而指针是它指向的某个东西的地址。例如定义int a[5],访问第二个元素可以用a[1],也可以用*(a+1)。当一个指针指向某个数组时,数组名和指针的作用应该是一样的。你定义的这个指针没有指向任何东西,是个野指针,不能通过类似于数组的方式...

C中数组和指针到底是否相同?
对于数组,由于编译器在编译的时候就已经知道每个符号的地址,因此如果需要一个地址来执行某种操作,可以直接进行操作,并不需要增加指令首先取得具体地址,对于数组就是如此;而对于指针,必须在运行时首先取得它当前的具体值然后才能进行引用。从这点就可以解释为什么上面的程序无法正确执行,因为在file1.c中定义的p是一个...

C语言数组指针问题?
首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址。知道这一点后就可以活学活用了。这是c语言的精髓。比如你定义了int p,a[10];并且让p=a;,这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的...

关于c语言结构体变量成员引用的问题
与(2)类似,是指针间的赋值,必须保证左右操作数的指针类型是一致的。由于n是结构体sk的第一个变量,因此其地址与结构体变量地址相同,可以强制转换得到正确的地址。(4)、c是一个二维数组,p是一个指向数组的指针,因此p的*运算都是得到一个数组,**运算才能取到数组中的值。只有D是**运算。

c语言中数组名是什么意思
C语言中,数组名是一个不可变的指针常量,不能对它进行加、减和赋值运算。在C语言中规定,数组名是代表该数组的首地址且符合标识符书写规定的变量标识符。不能对它进行加、减和赋值运算。整个数组是以首地址开头的一块连续的内存单元。如有字符数组char c[10],设数组c的首地址为2000,也就是说c...

指针与数组的区别和联系
在C\/C++语言中定义一个指针,就是在栈区开辟一个内存空间用来存放它指向的内存地址,然后给指针赋值,就是把地址值赋值给刚才开辟的内存空间,然后通过访问该内存中的地址值来间接访问该地址下存放的数据。如果该地址值指向的是一块静态存储区,如字符串常量等,当然就不可以修改指向的内容啦。经验之谈...

c语言指针与数组,怎么联系起来?
1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。

相似回答