日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言变量作为数组长度,为什么在C中不允许将数组的大小作为常量变量但在C中允许?...

發布時間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言变量作为数组长度,为什么在C中不允许将数组的大小作为常量变量但在C中允许?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在C const中,并不意味著“常量”(即,在編譯時可評估).它只是意味著只讀.

例如,在一個函數中,這個:

const int r = rand();

const time_t now = time(NULL);

完全有效.

定義為const int的對象的名稱不是常量表達式.這意味著(在C??99之前的C和C的所有版本中)它不能用于定義數組的長度.

盡管C99(以及可選的C11)支持可變長度數組(VLA),但它們無法初始化.原則上,編譯器在定義VLA時不知道VLA的大小,因此無法檢查初始化程序是否有效.在您的特定情況下,編譯器很可能能夠解決它,但語言規則旨在涵蓋更一般的情況.

C幾乎相同,但C有一個C缺乏的特殊規則:如果一個對象被定義為const,并且它的初始化是一個常量表達式,那么對象的名稱本身就是一個常量表達式(至少對于整數類型) .

C沒有采用這個功能的確沒有充分的理由.在C中,如果你想要一個整數類型的名稱常量,通常的方法是使用一個宏:

#define LEN 5

...

int arr[LEN] = {1, 2, 3, 4, 5};

請注意,如果更改LEN的值,則必須重新編寫初始值設定項.

另一種方法是使用匿名枚舉:

enum { LEN = 5 };

...

int arr[LEN] = {1, 2, 3, 4, 5};

枚舉常量的名稱實際上是常量表達式.在C中,由于歷史原因,它始終是int類型;在C中它是枚舉類型.不幸的是,這個技巧僅適用于int類型的常量,因此它僅限于INT_MIN到INT_MAX范圍內的值.

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的c语言变量作为数组长度,为什么在C中不允许将数组的大小作为常量变量但在C中允许?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。