文档介绍:C程序设计六、数组
六、数组
一维数组
数据类型数组名[常量];
数组下标从0开始
int a[3];
int a[3]={10,20,30};
int a[3]={10,20};
int a[ ]={10,20};
char s[ ]={‘e’,’b’,’a’};
char s[ ]=“eba”;
六、数组
一维数组
数据类型数组名[常量];
数组下标从0开始
以下程序是否正确?
A)int a[10];
a[10]=1;
B)int a[10];
a[ ]={0,1,2,3,4,5,6,7,8,9};
C)int a[10]={1,2,3,4,5};
D)int a[ ]={1,2,3,4,5,6};
E)int a[5]={1,2,3,4,5,6};
A) 语法上正确,逻辑上错误
B) 错
C) 对
D) 对
E) 错
六、数组
一维数组
数据类型数组名[常量];
数组下标从0开始
以下程序运行后的输出结果是___
main(){ int i,n[]={0,0,0,0,0};for(i=1;i<=4;i++){ n[i]=n[i-1]*2+1;printf("%d ",n[i]);}}
六、数组
一维数组
系统在定义数组时,是分配一段连续的内存给数组。
数组名表示数组空间的首地址。
int a[4]={10,20,30,40};
……
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
……
30
10
40
20
a[0]
a[2]
a[3]
a[1]
六、数组
一维数组
系统在定义数组时,是分配一段连续的内存给数组。
数组名表示数组空间的首地址。
以下语句是否正确?
float z[10],*e;
z=e;
e=z
z=5;
z[4]=z;
z[20]=65;
a)错,z是常量
b)对
c)错,z是常量
d)错,类型不符
e)错,越界,但语法上不报错
六、数组
一维数组
c语言中规定:
如果指针p指向u,则p+1指向内存中与u相邻的下一个同类型变量。
对于一个数组a,如果p指向a[i],则p+1指向a[i+1]
……
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
……
30
10
40
20
a[0]
a[2]
a[3]
a[1]
六、数组
一维数组
对于
int a[4]={10,20,30,40};
a表示首地址,即a[0]的地址
a+1就是a[1]的地址
a+i等同于&a[i]
*(a+i)等同于a[i]
……
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
……
30
10
40
20
a[0]
a[2]
a[3]
a[1]
六、数组
一维数组
int z[5]={10,20,30,40,50};
求下列表达式的值:
(A)z+2
(B)*z+2;
(C)*(z+2);
(A)z[2]的地址
(B)12
(C)30
六、数组
一维数组
main()
{int a[10]={90,80,70,60,50,40,30,
20,10,0},
*p=a+5;
printf("%d\n",++*p);
printf("%d\n",*--p);
}
41,50