陣列下標用變數,陣列什麼是下標變數

時間 2022-04-23 17:45:52

1樓:匿名使用者

對於ansi 標準c及c++,這都是標準沒有定義的,也就是說,最好認為不可以用變數代入陣列個數

c99標準中加入了這個特性,但c99標準還未流行。

對於c++編譯器,gcc擴充了這個功能,但是它未被標準支援所以這樣的程式是不具備編譯可移植性的。早期的vc++6.0不支援此特性。

但是你若在c++中定義const int n = 5;

則可以int a[n];

因為c++中,const型變數是作為編譯時常量的。

但在ansi c中卻不行,因為c中const型變數是作為唯讀的變數出現的,所以不能用其定義陣列個數

雖然在彙編的角度看,int a[n];這種語句即使n是變數,也是很好實現的,但c/c++出於多種考慮(例如n的不確定性以及樓上提到的一點原因)拒絕了它

要模擬動態陣列,最好使用new,malloc類似函式動態分配記憶體,這樣的程式才是最安全的

樓主,我看大師steve summit的書,他告訴我說去在意不同的編譯器之間的對標準的支援程度的不同是沒多大意義的。我們只需知道ansi c/c++兩者的標準定義行為,對未定義行為及不確定行為不同的編譯器有不同的實現與擴充套件,也盡量不要去用,儘管某些編譯器出於好意擴充套件了某些行為

這裡看到了對巨集的討論。巨集是預處理器管的範疇,而非編譯器的範疇

要想真正理解以上所有這些,請看大師的書:《c programming faqs》與《c++ primer》,前者對應c,後者對應c++。

單在這裡討論是理解不了的

2樓:閔真弭雅惠

比如有乙個陣列:arr[5]=;

當你要用到這個陣列第二個元素時,你就可以用arr[1]來代表第二個元素7,這裡的1就是下標變數。變數與下標變數的區別在於:下標變數只能是乙個非負的整型值,而變數即可以表示正數也可以表示負數。

第二,變數表示的數值可以很大,但下標變數表示的值是有一定範圍的。比如說上面這個陣列,它的下標的範圍就只能是0-4,如果你要用6作這它的下標,就會出現錯誤。因為編譯器在這個陣列裡找不到這個元素。

記住:在c/c++裡所有陣列的下標都是從0開始的

3樓:

理論上不可以,在編輯時刻編輯器並不知道變數的值,只有用預定義常量才可以. gcc好象不是很符合c標準,標準上說變數宣告要在其他語句前,你這裡陣列變數宣告卻在scanf後,說明gcc容許出現這些用法,但標準並不提倡,因為一但改變環境將無法執行

4樓:匿名使用者

您好如果使用陣列時,使用變數做角標,是絕對可以的,不然陣列就是去了它的意義,完全沒有存在的必要了,您放心使用就可以了。

您的書可能是說定義的時候不可以用變數。這就要看您的編譯環境了 vc是不可以的,高版本的gc

c都是可以的

注意:這樣寫不規範,盡量避免

5樓:

比較新的編譯器都可以

gcc或者vc可以放心用

6樓:重新整理關注

是啊 不能編譯 奇怪啦!#include

int main()

陣列什麼是下標變數

7樓:匿名使用者

比如有乙個陣列:arr[5]=;

當你要用到這個陣列第二個元素時,你就可以用arr[1]來代表第二個元素7,這裡的1就是下標變數。變數與下標變數的區別在於:下標變數只能是乙個非負的整型值,而變數即可以表示正數也可以表示負數。

第二,變數表示的數值可以很大,但下標變數表示的值是有一定範圍的。比如說上面這個陣列,它的下標的範圍就只能是0-4,如果你要用6作這它的下標,就會出現錯誤。因為編譯器在這個陣列裡找不到這個元素。

記住:在c/c++裡所有陣列的下標都是從0開始的

8樓:__________鄭晟

假設int a[10];

1、a[0]中的「0」、a[5]中的「5」就是下標變數。

2、a[0],a[1],…,a[9]叫做變數具體說明如截圖

9樓:

比如說乙個陣列存10個變數a〔10〕=〔21,57,98,368,87,897,199,1,37,0〕;

那麼a[0]=21,……,a[9]=0;這個明白吧?

a[0]中的0表示下標變數,21就表示變數,區別不說你清楚了

c語言問題:定義陣列時,下標可不可以是變數?

10樓:匿名使用者

你將這個**放到編譯器裡面就知道了..會報錯的.!

定義下標後就會分配記憶體.要是你的下標變大了之後記憶體放不下了就會出錯..

如何在c/c++中陣列的下標使用變數

11樓:扈懷煒

宣告陣列時不能使用變數座位下標,在引用陣列元素時可以使用變數,如上所示.

12樓:匿名使用者

對於ansi 標準c及c++,這都是標準沒有定義的,也就是說,最好認為不可以用變數代入陣列個數

c99標準中加入了這個特性,但c99標準還未流行。

對於c++編譯器,gcc擴充了這個功能,但是它未被標準支援所以這樣的程式是不具備編譯可移植性的。早期的vc++6.0不支援此特性。

但是你若在c++中定義const int n = 5;

則可以int a[n];

因為c++中,const型變數是作為編譯時常量的。

但在ansi c中卻不行,因為c中const型變數是作為唯讀的變數出現的,所以不能用其定義陣列個數

雖然在彙編的角度看,int a[n];這種語句即使n是變數,也是很好實現的,但c/c++出於多種考慮(例如n的不確定性以及樓上提到的一點原因)拒絕了它

要模擬動態陣列,最好使用new,malloc類似函式動態分配記憶體,這樣的程式才是最安全的。

陣列的引用下標可以是變數常量

13樓:匿名使用者

char a[100];

for(i=0;i<100;i++)

js 陣列 下標是乙個變數

14樓:

note[name2] 和 note["abc"] 一樣的,都能取到值。

可以用中文。

磁碟陣列怎麼用,什麼叫磁碟陣列,怎麼用

那要看您想怎麼用,自己家用就raid0最好了,速度快,資料吞吐量大,對提高整機效能有很大幫助,其他的陣列模式不適合家用,raid1是保障資料安全性的,相當於備份的效果,raid5需要的硬碟數量就多了,不實際。現在一般的主機板都整合raid功能,具體設定可以參照你的主機板說明書,但是想raid0,至少...

VB遇到陣列下標越界的錯誤處理方式

我仔細看了你的問題,找出了根本所在 第二次是邏輯錯誤,檔案未關閉,又要被開啟 如果你的出錯跳轉後換成msgbox err.number後你會發現第一次錯誤代號是9,第二次錯誤代號是55 9號是 下標越界 錯誤,55號是 檔案已開啟 錯誤。可以這樣改,在容錯裡加上close 1,沒問題了,因為在開啟2...

char指標變數分配空間,char陣列與char指標的記憶體分配空間

1,char指標不一定必須分配空間才能賦值,比如char ch a char p p ch 或者char str null str malloc 4 if str null 2,memset不是用來分配空間的,而是分配空間之後用來初始化空間的。比如char p malloc sizeof int m...

用c 實現兩個字元陣列變數的交換。

include include using namespace std void main 這裡輸入的字元不要超過2個。cin a cin b strcpy c,a strcpy a,b strcpy b,c cout 執行結果 首先你的陣列設定過短,a 2 b 2 分別只能輸入乙個字元,因為回車被...

C 怎樣使用變數定義二維陣列,C 中怎麼用new函式定義乙個二維陣列?

1.定義m m的陣列。int m,p p new int m 2.定義n m的陣列 int n int p 2 new int n 2 此處的2不能是變數 3.定義n m的二維陣列 float tt new float n for int i 0 i float m float tt new flo...