C语言——指针与数组
2011-08-12 13:51
169 查看
在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个整数 ,按由小到大次序输出,并输出其中最大最小数各自出现的次数
#include <stdio.h> int main() { int max = 0 , min = 0 , temp , i , j , num[5] , *p ; for(i = 0 ; i < 5 ; i++) //依次输入5个整数到数组内 scanf("%d", num+i); for(i = 0 ; i < 5 ; i++) // 比较大小 ,按从小到大顺序排列 { for(j = i+1 ; j < 5 ; j++) { if(*(num+i)>*(num+j)) { temp = *(num+i); *(num+i) = *(num+j); *(num+j) = temp ; } } } for(j = 0 ; j < 5 ; j++) //计算max , min 的次数 { if(*(num+j) == *(num+0)) min += 1 ; if(*(num+j) == *(num+4)) max += 1 ; } printf("\n max times = %d , min times = %d \n" , max , min); //for(p = num ; p <= num + 4 ; p++) for(i = 0 ; i < 5 ; i++) // 两种输出方式都可以 { //printf("%5d" , *p); printf("%4d", *(num +i)); } printf("\n"); return 0 ; }
二 :指针与多维数组 :
二维数组 a[m]
中的元素 a[i][j] 的表示方法 有以下 7 种 (int *p = a ;):
a[i][j] *(a[i] + j) *(*(a + i) + j) (*(a + i))[j] *(&a[0][0] + n * i + j) *(a[0] + n * i + j) *(p + n * i + j)
例二 :由键盘输入 8 个整数 ,存入一维数组 a 中 ,再组成一个两行四列的二维数组 b[2][4] ,要求b[i][j]的值为a[0] , a[1] , ... , a[0] + i *4 + j 之和
#include <stdio.h> #define N 8 int main() { int a , b[2][4] , sum = 0 , i , j , *pa = a , *pb = b ; for(i = 0 ; i < N ; i++) { scanf("%d" , pa + i); } for(i = 0 ; i < 2 ; i++) //计算生成b[2][4] { for(j = 0 ; j < 4 ; j++) { sum += *(pa + i * 4 +j) ; *(pb + i * 4 + j) = sum ; } } printf("\n Aarray : "); //for(pa = a ; pa < a + N ; pa++) //两种输出方式都可以 for(i = 0 ; i < N ; i++) { //printf("%d" , *pa); printf("%4d" , *(pa+i)); } printf("\n Barray :"); for(i = 0 ; i < 2 ; i++) //输出数组 b[2][4] { printf("\n"); for(j = 0 ; j < 4 ; j++) { //printf("%4d" ,*(pb + i * 4 + j)); //两种输出方式都可以 printf("%4d" , *(*(b + i) + j)); } } printf("\n"); return 0 ; }
相关文章推荐
- c语言的指针数组和数组指针
- c语言之指针数组理解二
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
- 【错误记录】关于C语言指针和数组
- 复习C语言系列二:动态调用函数指针数组
- C语言数组与指针对比
- C语言:数组与指针实践项目
- C语言结构体里的成员数组和指针
- C语言结构体里的成员数组和指针
- C语言 字符串用指针数组将字符串进行排序
- C语言二分查找法(指针和数组实现)
- 理解C语言 第25课 指针数组与数组指针的分析
- 由一题讨论C语言中的“指针数组作main函数的形参”即 main(int argc,char *argv[])的使用
- C语言 指针数组 多维数组
- C语言 指针、结构体、数组
- c语言-数组名字是指向数组第一个元素的指针
- 第14周 《C语言及程序设计》程序阅读——数组与指针
- C语言第13天 指针与数组
- C专家编程之为什么C语言把数组形参当做指针:数组/指针实参