C语言——指针与数组
2012-07-09 21:25
204 查看
在C语言中 ,无论是一维数组还是二维数组 ,数组名实际是指针常量(是一个符号常量) ,称为数组指针
一 :一维数组和指针 :
例一:任意输入5个整数 ,按由小到大次序输出,并输出其中最大最小数各自出现的次数
二 :指针与多维数组 :
二维数组 a[m]
中的元素 a[i][j] 的表示方法 有以下 7 种 (int *p = a ;):
例二 :由键盘输入 8 个整数 ,存入一维数组 a 中 ,再组成一个两行四列的二维数组 b[2][4] ,要求b[i][j]的值为a[0] , a[1] , ... , a[0] + i *4 + j 之和
标签: 指针
一 :一维数组和指针 :
//数组名a是数组的起始地址 ,C语言规定 : a = &a[0] , a + 1 = &a[1] , ... , a + i = &a[i] , ... //由指针运算*和&的关系可知 : * a = a[0] , *(a + 1) = a[1] , ... , *(a + i) = a[i] , ...
例一:任意输入5个整数 ,按由小到大次序输出,并输出其中最大最小数各自出现的次数
1 #include <stdio.h> 2 3 int main() 4 { 5 int max = 0 , min = 0 , temp , i , j , num[5] , *p ; 6 7 for(i = 0 ; i < 5 ; i++) //依次输入5个整数到数组内 8 scanf("%d", num+i); 9 10 for(i = 0 ; i < 5 ; i++) // 比较大小 ,按从小到大顺序排列11 { 12 for(j = i+1 ; j < 5 ; j++) 13 { 14 if(*(num+i)>*(num+j)) 15 { 16 temp = *(num+i); 17 *(num+i) = *(num+j); 18 *(num+j) = temp ; 19 } 20 } 21 } 22 23 for(j = 0 ; j < 5 ; j++) //计算max , min 的次数24 { 25 if(*(num+j) == *(num+0)) 26 min += 1 ; 27 if(*(num+j) == *(num+4)) 28 max += 1 ; 29 } 30 31 printf("\n max times = %d , min times = %d \n" , max , min); 32 33 //for(p = num ; p <= num + 4 ; p++)34 for(i = 0 ; i < 5 ; i++) // 两种输出方式都可以35 { 36 //printf("%5d" , *p);37 printf("%4d", *(num +i)); 38 } 39 printf("\n"); 40 41 return 0 ; 42 }
二 :指针与多维数组 :
二维数组 a[m]
中的元素 a[i][j] 的表示方法 有以下 7 种 (int *p = a ;):
1 a[i][j] 2 *(a[i] + j) 3 *(*(a + i) + j) 4 (*(a + i))[j] 5 *(&a[0][0] + n * i + j) 6 *(a[0] + n * i + j) 7 *(p + n * i + j)
例二 :由键盘输入 8 个整数 ,存入一维数组 a 中 ,再组成一个两行四列的二维数组 b[2][4] ,要求b[i][j]的值为a[0] , a[1] , ... , a[0] + i *4 + j 之和
1 #include <stdio.h> 2 #define N 8 3 4 int main() 5 { 6 int a , b[2][4] , sum = 0 , i , j , *pa = a , *pb = b ; 7 8 for(i = 0 ; i < N ; i++) 9 { 10 scanf("%d" , pa + i); 11 } 12 13 for(i = 0 ; i < 2 ; i++) //计算生成b[2][4]14 { 15 for(j = 0 ; j < 4 ; j++) 16 { 17 sum += *(pa + i * 4 +j) ; 18 *(pb + i * 4 + j) = sum ; 19 } 20 } 21 22 printf("\n Aarray : "); 23 //for(pa = a ; pa < a + N ; pa++) //两种输出方式都可以24 for(i = 0 ; i < N ; i++) 25 { 26 //printf("%d" , *pa);27 printf("%4d" , *(pa+i)); 28 } 29 30 printf("\n Barray :"); 31 for(i = 0 ; i < 2 ; i++) //输出数组 b[2][4]32 { 33 printf("\n"); 34 for(j = 0 ; j < 4 ; j++) 35 { 36 //printf("%4d" ,*(pb + i * 4 + j)); //两种输出方式都可以37 printf("%4d" , *(*(b + i) + j)); 38 } 39 } 40 printf("\n"); 41 42 return 0 ; 43 }
标签: 指针
相关文章推荐
- 对于C语言中指针和数组的认识和看法
- C语言 指针与数组
- C语言中 数组到底是不是指针和数组作为参数问题
- C语言 通过指针从函数返回一个数组
- 玩儿转C语言:数组和指针(2)
- C语言 通过指针访问一维数组的几种方式,通过数组名访问一维数组
- C语言深度剖析-----数组参数和指针参数分析
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言字符串指针变量与字符数组的区别
- C语言的指针和数组
- c语言学习零碎整理(7):数组名是指针吗?
- C语言再学习 -- 再论数组和指针
- C语言学习笔记之指向数组元素的指针和指向数组的指针
- 第14周 《C语言及程序设计》实践项目——数组与指针
- C语言中字符数组和指向字符数组的指针的区别
- 【嵌入式开发】C语言 结构体相关 的 函数 指针 数组
- C语言从零开始——指针数组和数组指针
- C语言中指针与函数的关联2(数组的降级)
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
- C语言数组与指针