C語言基礎-1、指標

吃粥要吃烫的發表於2024-03-16

一、取地址運算

  • 運算子&
  • scanf("%d",&i);中的&是獲得變數的地址,它的操作物件必須是變數
  • &不能對沒有地址的東西取地址:&(a+b),&(a++)

二、指標

  • 就是儲存地址的變數
  • int i; int *p = &i;
  • int *p,q //p是一個指標,是一個指向int型的指標變數,q則是一個單純的int型變數
    1、指標變數
  • 變數的值是記憶體的地址
  • 普通變數的值是實際的值
  • 指標變數的值是具有實際值的變數的儲存地址
    2、作為引數的指標
  • void f(int *p);
  • 在被呼叫的時候就得到了某個變數的地址:int i = 0;f(&i);
  • 在函式里面就可以透過這個指標訪問外面的那個i
    3、訪問那個地址上的變數*
  • '*'是一個單目運算子,用來訪問指標的值多表示的地址上的變數
  • 可以做右值也可以做左值
  • int k = *p;(相當於將p所指向的地址中所儲存的資料賦值給了p)
  • *p = k+1;

三、指標與陣列
1、傳入函式的陣列變成了什麼

  • int f(int a[]);//實際上是指標,是指向陣列a首地址的指標
  • 在函式里面對陣列進行賦值操作,是可以成功的

2、陣列變數是特殊的指標

  • 陣列變數本身表達地址,所以
  • int a[10]; int *p=a;//無需用&取地址
  • 但是陣列的單元表達的是變數,需要用&取地址
  • a == &a[0];

相關文章