第1个回答 推荐于2016-05-06
1、数组的首地址,在同一计算机上,正常运行的情况下,这个地址是不会变的。
2、数组的首地址,在不同的计算机,不同的系统上,一般情况下这个地址会变的。
3、现代操作系统的内存管理使用的是虚拟内存技术,一般来说,习惯性的讲内存看作是一个大的字节数组,每一个字节都有一个内存地址,本身虚拟内存地址的变化在同一台计算机上基本不大,但是实际的物理内存地址,变化肯定是很大的。问题中所说的数组的首地址,本质上是虚拟内存地址,因此才有1和2中的描述。
第2个回答 2006-12-28
数组有两种定义方法:
1.int a[];
2.int *a;
这两种差不多是等价的,也就是说,2中的a=1中的a,因为a就是一个地址。
比如在1中访问元素是a[5];
那么在2中访问元素是*(a+5);
这两种访问是等价的!
要好好理解指针的定义才能弄明白,因为要记住,数组名就是一个指针,指针的内容是数组第一个元素的地址!
你说的argv++在这里是a++,就是相当于在数组中的a[i++];
也就是说a[i++]=*(a++),可以上机实践一下
第3个回答 2006-12-28
任何数组的数组名 都可以进行 argv++ 的操作吧
数组名代表的 是一个在数组初始化时指向数组首地址的一个指针
argv++ 不过是把这个指针指向的地址 移向内存中的下一个地址
就这样而已
第4个回答 2006-12-28
数组名不能改变(是指针常量)
argv不是数组名。比如声明为如下形式 char * argv[],argv是指向字符串数组的指针。