C語言基礎 指標與陣列

2021-07-07 03:40:42 字數 2610 閱讀 7680

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是乙個指標,指向乙個整型的一維陣列,這個一...