C語言筆記-指標(7) *號帶來的錯亂

指標的具體涵義取決於生明的方式:
  int *i;

*i是個整數,所以透過int *i把*i聲名為整數

下列舉出聲名中的*i與聲名外的*i涵義不同:


  1. int *i=malloc(sizeof(int));    //正確
  2. *i=23;                                   //正確
  3. int *i=23;                              //錯誤

簡單的說就是:
  • 當用於聲明時,星號表示指標
  • 不用於聲明時,星號表示指標的值

  1.            int i=10;
  2.            int*j=&i;
  3.            int *k=j;
  4.           *j=100;
第二行是對的,因為*j是一個聲明,因此表示指標
第三行 *k是一個聲名指標,把他賦值給j是合法的
第四行,*j不在聲明中,因此他表示一個普通整數,然後把100賦值給它(i                 也會隨之改變)

結論:
在聲明中看到*i,表示他是只向某個對向的指標
在非聲明中看到*i,他是指標所指向的值


此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝

這個網誌中的熱門文章

FreeRTOS學習筆記 (二)-任務創建和刪除(xTaskCreate及vTaskDelete)

FreeRTOS學習筆記 (三)-時間管理vTaskDelay()及vTaskDelayUntil()

MCU的硬體基礎知識(2) 電晶體的應用