define SIze 30 maino int s[SIZE],i, k=1 for(=0;i<SzE;k+=2,++)s[]=k; printf("In顺序输出n) for(i=0; i< SIZE; i++) printf(c%4d”,s[) f(+1)%10==0) printf(n?) printf(in逆序输出n?); for(i= SIZE-1; i>=0; i printf(%3d%c”,s[,(i%10==0)?in:""); printf( In)
#define SIZE 30 main() { int s[SIZE], i, k=1; for (i = 0; i < SIZE ; k+=2, i++) s[i]=k; printf(“\n顺序输出\n”); for(i = 0 ; i < SIZE; i++) { printf(“%4d”, s[i]); if((i+1)%10==0) printf(“\n”); } printf(“\n逆序输出\n”); for(i = SIZE - 1; i >= 0 ; i--) printf(“%3d%c”, s[i], (i%10 == 0) ? ’\n’ : ’ ’); printf(“\n”); }
92一维数组和指针 a &a[0]→> ■9.21一维数组和数组元素的 地址 C语言中,在函数体中或在函 数外部定义的数组名可以认为是 一个存放地址值的指针常量,其 值(地址)是数组第一个元素的 地址,也就是数组所占一串连续 存储单元的起始地址。 语句:a=&a[4],a++都是非法的,因 为不能给a重新赋地址值
9.2 一维数组和指针 ◼ 9.2.1一维数组和数组元素的 地址 C语言中,在函数体中或在函 数外部定义的数组名可以认为是 一个存放地址值的指针常量,其 值(地址)是数组第一个元素的 地址,也就是数组所占一串连续 存储单元的起始地址。 语句:a=&a[4] ,a++都是非法的,因 为不能给a重新赋地址值 a[0] a[9] a a = &a[0]→
维数组的内存模型 例如有如下定义: nt a[10] 其内存模型如下: a[o]a们a2]a3]a4]a[5]a6]a[7]a8]a[9 a &alo
一维数组的内存模型 例如有如下定义: int a[10]; 其内存模型如下: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a &a[0]
9.2.2通过指针引用数组元素 可以通过指针给数组元素赋值。 int a 10] int"p; p=&a|3l; 10 相当于a|3=1;*/
9.2.2 通过指针引用数组元素 可以通过指针给数组元素赋值。 int a[10]; int *p; p=&a[3]; *p=10; /*相当于 a[3]=1;*/
■C语言规定:若p指向数组中的一个元素, 则p+1指向数组的下一个元素。 ■例如:若数组元素是实型,每个元素占4个字 节,则p+1使p的原值(地址)加4个字节 p+1所代表的地址,实际上是p的原地址加d,d 是一个数组元素所占的字节数 ■(整型d=2,实型d=4,字符型d=1)
◼ C语言规定:若p指向数组中的一个元素, ◼ 则 p +1 指向数组的下一个元素。 ◼ 例如:若数组元素是实型,每个元素占4个字 节,则p+1使p的原值(地址)加4个字节。 ◼ p+1所代表的地址,实际上是p的原地址加d, d 是一个数组元素所占的字节数 ◼ (整型d=2,实型d=4,字符型d=1)