
例1:以指针方式访问数组元素的程序
void main() {
int a[5]={3,6,9,12,15};
int i, *p=a;
for(i=0; i<5; i++) printf("%5d",*p++);
printf("\n"); //换行
for(p=a+4; p>=a; p--) printf("%5d",*p);
printf("\n"); //换行
}
3 6 9 12 15
15 12 9 6 3
例2:进行简单变量动态存储分配
void main() {
int x=23,y=40,z;
int *p1=malloc(sizeof(int));
int *p2=malloc(sizeof(int));
*p1=x; *p2=y; //*p1:23, *p2:40
printf("%d %d\n",*p1,*p2); //23 40
z=*p1;*p1=*p2;*p2=z; //交换*p1与*p2的值
printf("%d %d\n",*p1,*p2); //40 23
free(p1); free(p2);
}
例3:动态存储分配任意大小的一维数组的程序
void main() {
int n,i,*a;
printf("给n输入一整数(1-10): ");
scanf("%d",&n);
a=calloc(n,sizeof(int));
a[0]=1;
for(i=1; i<n; i++) a[i]=3*a[i-1];
for(i=0; i<n; i++) printf("%5d",a[i]);
printf("\n"); free(a);
} //输8:1 3 9 27 81 243 729 2187
例4:动态存储分配二维数组的程序
int** InputData(int row, int col){
int i,j;
int** ab;
ab=calloc(row, sizeof(int*));
for(i=0; i<row; i++) ab[i]=calloc(col,sizeof(int));
printf("%d行*%d列: \n",row,col);
for(i=0; i<row; i++)
for(j=0; j<col; j++) scanf("%d",&ab[i][j]);
return ab;
}
void main() {
int i,j;
int row=3,col=4;
int** ab=InputData(row,col);
printf("输出二维表格数据: \n");
for(i=0; i<row; i++) {
for(j=0; j<col; j++) printf("%5d",ab[i][j]);
printf("\n");
}
for(i=0; i<row; i++) free(ab[i]);
free(ab);
}