回覆列表
-
1 # 下崗虎王
-
2 # 使用者3077706778802
原始碼如下:
#include<stdio.h>
#include<stdlib.h>
int main(){
int a[5];
int *p=a; //定義一個整型指標變數p,使它指向一個5個元素的一維陣列.
int i;
printf("Please input:");
for(i=0;i<5;i++)
scanf("%d",p+i); //使用指標移動的方式,輸入5個整型陣列元素.
int *q=(int*)malloc(sizeof(int)*5); //malloc函式動態分配5個整型數的地址空間。
printf("Please input:");
for(i=0;i<5;i++)
scanf("%d",q+i); //使用陣列下標的方式輸入5個整型元素。
for(i=0;i<5;i++)
if(p[i]>q[i]){
int t=p[i];
p[i]=q[i];
q[i]=t;
}
for(i=0;i<5;i++) //使用指標p和q分別訪問兩組資料
printf("%d",p[i]);
putchar(" ");
for(i=0;i<5;i++)
printf("%d",q[i]);
putchar(" ");
printf("p=%x ",p); //分別輸出交換後的兩組數。
printf("a=%x ",a);
printf("q=%x ",q);
free(q);
q=NULL;//按十六進位制方式輸出p、a和q的地址。
return 0;
}
執行結果如下:
指向整型數的指標陣列 int *p1[] = {NULL, NULL}; 是沒有問題的。原因在於,你申請指向字元的指標陣列,陣列中的元素是字串,指標陣列儲存的是字串首地址;而對於其他常量,你無法把地址給回,自然無法給指標陣列賦值。而我給的NULL是一個空指標,就可以賦給指標陣列了。指標陣列,元素只能儲存指標