C語言學習9

今天學習了數組與指針,指針與數組

先對內容進行了一下鋪墊,

void main1(int *p)

{

  int *p1 = p//&p;        //在這裏賦值給*p1的值是p或&p的區別,如果是p的話最後傳入main函數的值會進行改變,這原理主要是通過對地址進行數據更改,&p就不會被改變了,

//因爲&p相當於重新定義了一個新的地址,所以不會對傳入進來的數值的地址進行更改

*p1 = 100;

}

void main2(int *p)

{

  int **p2 = &p;   //在這裏傳入的數值是會被改變的,原理和main1當中傳入p是一樣的,不過是對變量的地址上的值的地址進行改動,最後輸出的結果也就會改變了

**p2 = 200;

}

void main()

{

int a = 2;

int *p = &a;

main1(p);//main2(p);

printf("%d",a);

}

還通過對存儲指針的類型進行了講解,想int a = 10;char *p = &a;這種情況下的輸出結果*p是不等於10的,存儲指針必須類型要一致,不然很容易出現錯誤,

下午就講的數組的用指針取得二維數組的值,主要有以下幾種

p = &a將變量a的地址賦給p

p = array將數組array首地址賦給p

p = &array[i]將數組元素的地址賦給p

p = &a[i]+j將數組的第i行第j列賦給p

p1 = p2將指針p2地址賦給p1

只要把賦值給搞明白其實還是很容易理解的,除開賦值之外就是和數組的運用沒什麼差別了,下午老師也花費了很多的心血把指針的取值進行反覆的對比與演練,把數組與數組的關係講的非常的透徹,主要還是得將取值的思路要清晰

指針對一維數組的取值a[]={1,2,3,4};

p = &(a+i),i是數組的下標取值

數組的第一個元素一般表示a[0],它的地址p1= &a[0],爲了方便也可以寫成p1 = &(a+0),然後後面的元素就在0的基礎上進行增加,寫成p = &(a+i)了

針對二維數組的取值a[][3] = {1,2,3,4,5,6,7,8,9};

p=&(a[i]+j);i是數組行的下標,j是數組列的下標

這個也可以通過一維數組的基礎上再進行擴展,每行可以當成一維數組當中第一個值的取值p1=&a[0],每行之後就可以在a[i]的後面進行增加數值所在的列數地址p1 = &(a[0]+0),在多行或多列的時候就可以直接在p1的基礎上進行增加了,寫成p = &(a[i]+j),


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章