C語言筆記-指標(1)

指標最容易搞混的就是:

  • int array[]
  • int *ptr_array
這兩種之間的差別


  • int array[10]:程式會做出已下的行為
  1. 在棧上分配一個可以容納10個整數的空間
  2. 把array當成一個指標
  3. 將指標與分配好的位址綁定
  這個空間是由系統自動分配出來的,所以不能改變其大小,如果拖離範圍後被釋放了,依然可以再拿回這個空間。
   但array這個指標不能指向其他地方,因為它與分配好的位址是綁定的。


  • int *ptr_array:
程式指會做一件事,就是將array聲明為一個指標
這個指標沒有綁定任何位址,可以重心只想任何地方,以下都是合法使用:

     ptr_array=malloc(sizeof(int)*10);

                     or
     ptr_array=array;


所以 int array[]和int *ptr_array 是不一樣的,已前看過幾本書都是把它們話上等號


不過在函示傳遞就沒有什麼區別了:

int fun(int *ptr_array,int array[]);

本質上他們做的事情都是一樣的





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













這個網誌中的熱門文章

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

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

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