通過陣列下標完成的操作都可以通過指標來實現。
1.定義:
int a[10];
a[i] //表示陣列a的第i個元素
int *p;
p = &a[0]; //p指向陣列a的第0個元素
x = *p; //p的值是陣列元素a[0]的位址,將陣列元素a[0]中的內容複製到變數x中
int *p = a; //陣列名就是乙個位址,指向陣列第乙個元素的位址
a[i]等價於*(a + i)
2.舉例:
#include int main()
; int *p, *q, *m, *n;
p = &a[0]; //將陣列a的第乙個元素位址賦給指標p
q = a; //陣列名是陣列第乙個元素的位址
printf("%d %d\n", p, q);
printf("%d %d\n", *p, *q);
m = &a[1];
n = a + 1;
printf("%d %d\n", m, n);
printf("%d %d\n", *m, *n);
if((p+1) == &a[1])
printf("是");
else
printf("否");
return 0;
}
結果:
字串常量是乙個字元陣列。
1.定義:
"hello world";
char c = ;
2.舉例:
#include int main()
; char *p, *q;
printf("%c\n", c[0]);
printf("%c\n", "hello world\0"[0]);
p = &c[6];
q = p + 1;
printf("%d %d\n", p, q);
printf("%c %c\n", *p, *q);
return 0;
}
結果:
1.舉例:已知一位高中學生7門課程的成績,求出總分和平均分並用指標遍歷陣列,求最大值和最小值。
實現:
#include int main()
; int sum = 0, min = 100, max = 0;
int i, *p;
for(i = 0; i < 7; i++)
printf("總分為%d,平均分為%.2f。\n", sum, sum / 7.0);
for(p = g; p <= &(g[7-1]); p++)
printf("最低分為%d,最高分為%d。", min, max);
return 0;
}
結果:
C語言指標陣列與陣列指標
初學者總是分不出指標陣列與陣列指標的區別。其實很好理解 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣...
C語言指標 指標與陣列
1 指標與一維陣列 2 指標與二維陣列 3 指標陣列與陣列指標 指標裡面最難的一種就是指標與陣列了,對於指標和二維陣列來說這裡面的關係比較複雜。牽涉到編譯器的原理和編譯過程。1 指標與一維陣列 指標是指向乙個記憶體的位址,一維陣列的陣列名代表一塊記憶體 這個陣列 的首位址,和陣列首元素的位址一樣,但...
C語言指標 指標與陣列
一 指標的運算 指標可以進行三種運算 1.指標加上整數 如果指標p指向陣列a i 那麼指標p j 指向a i j 前提是a i j 存在!2.指標減去整數 如果指標p指向陣列a i 那麼指標p j 指向a i j 前提 a i j 存在!3.兩個指標相加減 兩指標必須指向同一變數!否則運算沒有意義的...