1.改错题
修改以下程序,并给出正确代码及运行结果(截图):
(1)键盘输入n个整数,并逆序输出。

(2)输出打印二维数组中的值。







2.请在VC++6.0中编写以下C++程序,并给出代码及运行结果(截图)
(1) 从键盘输入n个整数(n<100),存放在一个一维数组中,逆序输出能被3整除的元素,并逆序输出数组下标为3的倍数的元素。
代码:


代码:

代码:

代码:

代码:
总结
1.数组与指针的定义:
数组: 有序的元素序列,数组名有限个类型相同的变量的集合命名。数组在内存中所占的大小由数组长度以及成员类型大小决定。
指针: 又称指针变量,在32位系统内存下占4个byte(64位系统内存下占8个byte),其中保存的值是某一块内存的地址。例:0x0000FF00
2.数组名与指针间的联系
在近乎所有使用到数组名的表达式中,数组名都表示数组第一个元素的地址,可将其看作是一个指针常量。而这个指针常量
所指向的类型与数组元素的类型一致。也正是因为如此数组名在表达式中不能作为左值,当其作为右值时其意义与&arr[0]是一致的。
在了解到数组名相当于是一个指针常量后,那么是否可以用一个指针变量去指向一个数组呢?当然可以!如以下代码所示:
int arr[5] = {1,2,3,4.5};
int *p = arr; //用指针变量p指向arr,p中存储的是数组首元素的地址。
当我们在对数组成员进行访问时就可以利用(数组名下标)以及(指针间接访问)两种方式,如以下表达式所示:
arr[ 1 ]; //访问数组中的第2个元素。(数组名下标)
*( arr+1 ); //与 arr[ 1 ] 作用相同。(指针间接访问)
*arr + 1 ; //*的优先级高于+,表示第一个元素的值+1。(指针间接访问)
arr[5]; //访问越界,产生随机值。(数组名下标)
2[arr]; //与 *(arr +2)作用相同。
3.请问 array 和 &array 有区别吗?
答:有。
解析:虽然 array 和 &array 的值相同,但含义是不一样的。array 表示数组第一个元素的位置,数组名虽然也是地址,但其地址
只是数组内第一个元素的地址,是!!数组首元素地址!!;而 &array 表示的是整个数组的地址(这里将数组看做一个整体),
是!!数组首地址!!。
注:数组的首元素地址:表示数组的首个元素的地址。
数组的首地址:表示整个数组的地址。
来源:freebuf.com 2021-04-01 14:09:30 by: Johnson666


