1.陣列指標
概念:指向陣列元素的指標
作用:使用陣列指標間接訪問陣列的元素
定義:
int *p;
初始化:
int a[4] = ;
int *q = a;//定義了乙個指標變數q,賦值陣列的首位址(第乙個元素的位址),q指向了陣列的第乙個元素
int *q = &a[0];//跟上面等價
陣列指標如何去訪問陣列元素:
p+1 表示指向陣列的下乙個元素
p-1 表示指向陣列的上乙個元素
/*
對於乙個一維陣列來說
int a[5];
1.&a[i];
2.a+i;
3.int *p = a;
p+1;
2)獲取a[i]的值有幾種方法:
1.&a[i];
2.*(a+i);
3.int *p = a;
*(p+1);
4.*(&[i]);
*/#include void nixuarray(int a,int len);
p[0] = a的位址
#include int main(int argc, const char * argv) ;
//列印指標陣列的第乙個元素的值
printf("&a = %p\n",&a);
printf("p[0] = %p\n",p[0]);
//列印指標陣列的首位址
printf("p = %p\n",p);
printf("&p[0] = %p\n",&p[0]);
//訪問a的值 a=3
printf("*(&a) = %d\n",*(&a));
printf("*(p[0]) = %d\n",*(p[0]));
//使用陣列名來訪問a的值
printf("**p = %d\n",**p);
return 0;
}
&a = 0x7fff5fbff7dc
p[0] = 0x7fff5fbff7dc
p = 0x7fff5fbff7f0
&p[0] = 0x7fff5fbff7f0
*(&a) = 3
*(p[0]) = 3
**p = 3
3.兩個指標變數之間的運算 1
)兩個指標變數之間的減法運算
int a[4] = ;
int *p1 = &a[0];
int *p2 = &a[3];
printf("p2-p1=%d\n",p2-p1);
執行結果:p2-p1=3
//如果兩個指標指向同乙個元素,相減的結果是 0
//如果兩個指標指向相鄰元素,相減的結果是 1的絕對值
注意:兩個指標變數之間沒有加法運算,也沒有乘法和除法 2
)兩個指標變數之間的關係運算
int a[4] = ;
int *p1 = &a[0];
int *p2 = &a[3];
printf("p2>p1 = %d\n",p2>p1);//1 表示p2在高位
//0 表示p1在高位或指向同一位置
執行結果:p2>p1 = 1
4.陣列名訪問二維陣列
int a[3][4]=;
//列指標
//a[0] == &a[0][0] a[0]+1 == &a[0][1] a[0]+2 == &a[0][2]
printf("&a[0][1]=%p\n",&a[0][1]);
printf("&a[0]+1 =%p\n",a[0]+1);
printf("&a[0][2]=%p\n",&a[0][2]);
printf("&a[0]+2 =%p\n",a[0]+2);
//行指標
//a[0] a[1] a[2]
//a+1 第二行首位址 a+2第三行首位址
printf("a+1 = %p\n",a+1);
printf("a[1] = %p\n",a[1]);
printf("a+2 = %p\n",a+2);
printf("a[2] = %p\n",a[2]);
執行結果:
&a[0][1]=0x7fff5fbff7c4
&a[0]+1 =0x7fff5fbff7c4
&a[0][2]=0x7fff5fbff7c8
&a[0]+2 =0x7fff5fbff7c8
a+1 = 0x7fff5fbff7d0
a[1] = 0x7fff5fbff7d0
a+2 = 0x7fff5fbff7e0
a[2] = 0x7fff5fbff7e0
C語言基礎 指標陣列與陣列指標
一 指標陣列 在這一節中我們來學習乙個陣列,這個陣列比較特殊,也比較普通。說它特殊是因為這個陣列是指標的陣列,也就是說我們有乙個陣列,這個陣列裡存放的變數型別是指標型變數 說它普通是因為陣列變數其實與其它普通變數沒有什麼區別,指標變數就是一種可以存放記憶體位址的變數,所以它們也可以被定義成一串連續的...
C語言基礎 指標與陣列
一 資料的位址和通過位址訪問資料 1 基本的資料型別的位址 int a a 變數a的位址 2 陣列的位址 int a 5 a,a,a 0 3 函式的入口位址 函式名 或者 函式名 4 通過位址去訪問記憶體中的資料 通過間接訪問運算子 訪問記憶體中的資料 二 指標的基本概念 1 定義 變數的位址稱為變...
C與C 基礎 陣列指標與指標陣列
c與c 基礎 陣列指標與指標陣列 c與c 基礎 結構體struct和typedef struct 區別 c與c 基礎 函式 c與c 基礎 記憶體管理 陣列指標也成為行指標,陣列指標,就是乙個指標,指向乙個一維陣列。定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一...