關於指標的學習

2022-08-12 19:03:12 字數 1759 閱讀 8657

# include int main()

把int看作乙個整體,這樣後面就是p=&x p是x的位址 ,p就是x的值

# include int huhuan(int* p, int* q);

int main()

int huhuan(int* p/*a的位址*/, int* q/*b的位址*/) /*int*型別的要對應&a和&b*/

此程式用來互換兩個數字,用到了函式

假定必須使用函式,那麼用傳統的方法就不行了,函式內的變數跟外面的沒有關係,而且也沒法返回兩個值,所以必須用到指標

# include int f(int* parr, int length);

int main()

; f(a, 5);

return 0;

}int f(int* parr, int length)

return 0;

}

# include int main()

# include int f(int* parr, int length);

int main()

; printf("%d\n", a[3]);

f(a, 5);

printf("%d\n", a[3]);

return 0;

}int f(int* parr, int length) /*為什麼要這麼麻煩要用指標,還是跟前面一樣,在函式內如果不用指標,

函式內定義的就算是和main函式裡的一樣,它們的值也一點關係都沒有,所以要用到指標才能把函式內的值搞到外去*/

要時刻記住a是乙個指標變數,它表示&a[0]也就是a[0]的位址

傳統陣列(靜態陣列)的缺點:

1.陣列長度必須事先制定,且只能是常數,不能是變數;

2.傳統陣列的記憶體程式設計師無法手動釋放;

3.傳統陣列長度一旦定義,其長度就不能再更改;

4.a函式定義的陣列,在a函式執行期間可以被其他函式使用,但a函式執行完畢以後,a函式中的陣列將無法在被其他函式使用;----------傳統方式定義的陣列不能跨函式使用;

malloc函式的使用

# include # include /*不能省*/

int main ()

int*佔4個位元組,如果malloc(100)那麼就會分配25個變數空間

char*佔1個位元組,如果malloc(100)那麼就會分配100個變數空間

double*佔8個位元組,如果malloc(200)那麼就會分配25個變數空間

malloc與函式結合 free函式的使用

# include # include int main ()

int f (*q)

# include int main ()

此處直接把前四個格仔放在一起,parr+1就是第5678格仔的總稱位址,*(parr+1)就是5678格仔內容;

關於C 指標學習感想

上學期尾聲時學習的指標困擾了我們大部分人,有好多內容我現在依然百思不得其解,所以我在網上找了部分指標的的教學者所講的心得,幫助大家理解指標以便更好展開學習。0.一般人覺得指標難學因為在學指標前還沒把表示式和變數的概念搞清楚。1.指標變數儲存的是記憶體位址。用指標訪問資料也稱為間接定址。類似於你找乙個...

關於鍊錶中指標的學習

昨天晚上在學習資料結構關於鍊錶的部分,理解鍊錶沒什麼難度,但是當自己動手寫程式的時候各種問題就出來了,感覺邏輯很正常但是總得不到正確的結果。首先自己對c語言指標理解的不是很深入,在定義鍊錶節點的結構體時,定義了乙個指標型別的變數指向結構體如 所示 1 typedef int status 2 typ...

關於指標傳遞和指標的指標

一開始沒有理解,導致對這個概念非常的模糊和不解。最近看完 徹底搞定c語言指標詳解 裡面關於指標的指標的解釋有了頓悟感。其實,很好理解,是我把它想複雜了。我們都知道,實參和形參的區別。形參並無法改變實參,這就是值傳遞。還有一種叫指標傳遞,實質就是去操作指標的指向物件。例子如下 exchg2 int p...