C語言中全域性陣列外部引用的小問題

2021-10-20 18:05:31 字數 543 閱讀 5047

我們知道,在 c 語言中,陣列名是陣列的首位址,是乙個指標常量,很多時候我們可以將陣列名當指標來用,但在全域性變數的外部引用中,全域性陣列和全域性指標變數的引用方式還是有區別的。

對於全域性陣列,需要按陣列宣告的方式來引用,例如:

extern int arr;
對於全域性指標,按指標宣告的方式來引用,例如:

extern int *pointer;
如果將全域性陣列按指標宣告的方式來引用,編譯可能不會報錯,但在執行的時候會出現意想不到的問題,最常見的應該就是段錯誤,例如:

檔案 file1.c 中有如下內容:

int arr = ;
檔案 file2.c 中有如下內容:

extern int *arr;

arr[2] = 4;

file2.c 中對陣列 arr 的操作會報錯,是因為 file2.c 中的指標變數 arr 並未成功引用到 file1.c 中的陣列 arr,應該算是乙個野指標。

C語言中的引用

關於引用,其實很簡單,c語言中的引用就是目標或者說變數的乙個別名,對它的操作和對變數的操作一樣。引用的宣告 型別 引用名 目標 變數 名 什麼意思?舉個栗子 int a int pa a 這就使引用的宣告,其實就是給變數取別名。需要注意的是在宣告中 符號並不是取位址的意思,而是宣告引用的識別符號,並...

c語言中的引用

引用就是某一變數 目標 的乙個別名,對引用的操作與對變數直接操作完全一樣。int rodents rats 實際上是下面 的偽裝表示 int const pr rats 引用rodents與表示式 pr相同。型別識別符號 引用名 目標變數名 說明 1 在此不是求位址運算,而是起標識作用。2 型別識別...

C語言中引用的用法

引用就是某一變數 目標 的乙個別名,對引用的操作與對變數直接操作完全一樣。引用的宣告方法 型別識別符號 引用名 目標變數名 例1 int a int ra a 定義引用ra,它是變數a的引用,即別名 說明 1 在此不是求位址運算,而是起標識作用。2 型別識別符號是指目標變數的型別。3 宣告引用時,必...