1.
数组通常具有的两种基本操作是查找和修改
2.
已知数组D的定义是int D[4][8];,现在需要把这个数组作为实参传递给一个函数进行处理。下列说明汇总可以作为对应的形参变量说明的是()。
int D[4][]
int *s[8]
int(*s)[8]
int D[][8]
int *s[8]; //定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。
int (*s)[8]; //定义一个数组指针,该指针指向含8个元素的一维数组(数组中每个元素是int型)。
区分int *p[n]; 和int (*p)[n]; 就要看运算符的优先级了。
int *p[n]; 中,运算符[ ]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组。
int (*p)[n]; 中( )优先级高,首先说明p是一个指针,指向一个整型的一维数组。
数组作为实参时必须指定列数,否则可能产生歧义,所以D正确
C是数组指针,每个都指向对应的数组的每列
3.
下列说法正确的是(1,2,4)
二维以上的数组其实是一种特殊的广义表
数组一旦建立,结构的元素个数和元素间的关系就不再变化
数组是一种线性结构,因此只能用来存储线性表
数组采用顺序存储方式表示
C错在我们需要区分数据的物理结构与逻辑结构。物理结构主要是指存储方式,包含线性存储与链式存储,它是从计算机存储的角度去考虑。逻辑结构指的是数据之间的关系,有线性关系和链式关系等,主要是从人为定义角度去考虑。数组是一种被人们定义为线性关系的表,至于其存储结构,可以用线性存储也可以是链式存储去存储
4.
选项代码中能正确操作数组元素的是()
int
main(){
int
a[N][N]={{0,0},{0,0}};
for
(
int
i=0;i<N;i++){
for
(
int
j=0;j<N;j++){
//访问二维数组a的值
//选项代码
}
}
}
*(*(a+i)+j)=1数组名当被直接使用时,是一个指向数组首地址的指针。如果数组是多维数组,那么数组名是指向第一行数组的首地址,而不是第一行第一列单个元素的地址,所以*(a+i)与a[i]是一个意思,当直接用a[i]时代表的是该一维数组的首地址,所以*(a[i]+j)是与a[i][j]等效,所以AB选项正确*(a[i]+j)=1