c語言定義全域性陣列問題,c語言陣列宣告問題

2021-12-19 15:20:12 字數 1660 閱讀 5044

1樓:匿名使用者

微控制器的led控制?陣列在子函式外作全域性變數是可以的,我就經常這麼定義。你的程式主函式呢?

void main?問題不在子函式的陣列呼叫這。全域性陣列的定義語句一般是uchar code table ={};和一般的陣列定義不同,必須加code,你看是不是這個問題。

詳細你可以找我私戳

2樓:叄生萬物

在c語言中,全域性變數和函式宣告及定義並列,也就是說,宣告在最外層作用域的變數即為全域性變數

如在如下程式中

int i;

int main()

int i就是乙個全域性變數,故在main函式中可以呼叫或修改i的值所以,定義陣列也和普通全域性變數的方法相同,如char str[10];

int main()

但是有幾點需要注意:

c中自上向下語法分析和編譯語法樹,如果要讓所有函式都能呼叫該全域性變數,就要把其放在所有函式定義之前,確保宣告的作用域覆蓋整個程式;

在全域性變數宣告時,其初始值必須為編譯時常量,不能為變數;

若要使用程式外的全域性變數,需要在修飾符中加入extern關鍵字,並不要忘了和原本定義處鏈結

3樓:

把你的所有函式體寫在main函式前面,就不用在前面進行函式宣告;

陣列什麼時候加code,這個是有講究的,在程式執行中不對陣列裡的內容進行修改時,這時可以加上code;如果在程式執行中要對陣列裡的內容進行

修改,那麼就不能加上code;比如在你程式中就可以加上code.

#define uint unsigned int#define uchar unsigned charuchar a=;

uchar a=;

uchar wei=;

uchar led1,led2,led3,led4;

uchar x=100;

void sz()

else

}void g()

void r()

void main( void )

c語言陣列宣告問題

4樓:

有初始化的陣列定義可以省略方括號中的陣列大小。

例如,下面的**中陣列定義為5個元素:

int a=;如 char str="program"

編譯時必須知道陣列的大小。如果陣列大小要根據運**況來確定,可以使用動態陣列:

int *p=(int *)calloc(num,sizeof(int));

5樓:匿名使用者

一般有四種陣列定義方式,以一維陣列為例:

//定義指定維數的陣列

int arr[10];

//定義不指定維數的陣列,陣列維數有初化列表元素個數決定。

int arr = ;

//定義指定維數的陣列,初始化不完全時,系統將未初始化元素初始化為0int arr[10] = ;

//動態分配乙個陣列。下面分配了乙個有10個元素的陣列。

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

6樓:匿名使用者

你說的是該型別指標可以不指定寬度吧,動態建立的那種可以。

那是int *a;才可以吧

c語言陣列問題C語言中用陣列解約瑟夫問題

答案是a 前2個 就表示乙個 字元 接著是141共三個字元 接著的 141表示乙個字元 abc三個字元 t製表符,乙個字元 所以總共9個字元 include include void main for i 0 i 5 i 放入新陣列printf n for i 0 i 5 i 輸出新陣列 求平均63...

c語言關於陣列賦初值的問題,C語言關於陣列賦初值的問題char buff

char buff 5 這樣寫賦初值,雖說沒有給buff 1 buff 4 賦值,但是預設是賦值0的,這樣寫沒問題。很多教材上都有的。char buff 10 是可以把這個陣列的所有元素的賦值成0的。不信你用下面的 測試一下。include void main int i for i 0 i 4 i...

C語言陣列基礎問題

1.請問arrout s,k 裡面的s是 值 還是 址?答 s是 位址,位址也是一種值。因此,c中有一種說法 c函式引數只傳值!2.s能換成其他的什麼形式?為什麼要轉?arrout 函式中,需要的是乙個整型變數的位址,你傳的s就是整型變數的位址,很正確的應用啊。3.k為什麼不是 k?答 當你不需要在...