1. c語言數組表達式必須含有常量值
VS中不支持VLA,定義數組時大小必須指定為字面值常量。只能寫成int isPri[25]。
2. C語言,這道題怎麼做,不確定元素個數我沒法定義數組啊
/* C99標准增加的變長數組(VLA) */
int N; /* 首先聲明一個變數作為數組大小 */
scanf ("%d", &N); /* 程序運行時,在聲明數組前設置N的值 */
int arr[N]; /* 聲明大小為N的數組 */
/* 注意:N的值必須在聲明數組前指定。聲明變長數組時不可以初始化。N只能被賦值1次,一旦確定,不可改變。*/
3. c語言中長度可變的數組
如果一個數組具有動態存儲周期(也就是說,如果在語句塊內定義數組,並且沒有 static 修飾符),那麼 C99 也允許把非常量表達式作為元素數量來定義該數組。這樣的數組被稱為長度可變數組(variable-length array)。
而且,長度可變數組的名稱必須是普通的標識符。長度可變數組不能作為結構或聯合的成員。在下面的示例中,只有 vla 數組的定義是合法的:
void func( int n ){int vla[2*n]; // 合法:存儲周期為動態的static int e[n]; // 非法:長度可變數組不可有靜態存儲周期
struct S { int f[n]; }; // 非法:f不是一個普通標識符/* ... */}
4. C語言 數組與指針 遇到的問題
首先先介紹一指針與數組的知識
指針:
指針是C語言的精華部分,通過利用指針,我們能很好地利用內存資源,使其發揮最大的效率。有了指針技術,我們可以描述復雜的數據結構,對字元串的處理可以更靈活,對數組的處理更方便,使程序的書寫簡潔,高效,清爽。但由於指針對初學者來說,難於理解和掌握,需要一定的計算機硬體的知識做基礎,這就需要多做多練,多上機動手,才能在實踐中盡快掌握,成為C的高手。 過去,我們在編程中定義或說明變數,編譯系統就為已定義的變數分配相應的內存單元,也就是說,每個變數在內存會有固定的位置,有具體的地址。由於變數的數據類型不同,它所佔的內存單元數也不相同。若我們在程序中做定義為: int a=1,b=2; float x=3.4, y = 4 . 5 ; double m=3.124; char ch1='a', ch2='b';不同數據類型的變數在內存中佔用的空間
讓我們先看一下編譯系統是怎樣為變數分配內存的。變數a,b是整型變數,在內存各佔2個位元組;x,y是實型,各佔4個位元組;m是雙精度實型,佔8個位元組;ch1,ch2是字元型,各佔1個位元組。由於計算機內存是按位元組編址的,設變數的存放從內存2000單元開始存放,則編譯系統對變數在內存的安放情況如右圖所示。
變數在內存中按照數據類型的不同,占內存的大小也不同,都有具體的內存單元地址,如變數a在內存的地址是2000,占據兩個位元組後, 變數b的內存地址就為2002,變數m的內存地址為2012等。對內存中變數的訪問,過去用scanf("%d%d%f",&a,&b,&x)表示將數據輸入變數的地址所指示的內存單元。那麼,訪問變數,首先應找到其在內存的地址,或者說,一個地址唯一指向一個內存變數,我們稱這個地址為變數的指針。如果將變數的地址保存在內存的特定區域,用變數來存放這些地址,這樣的變數就是指針變數,通過指針對所指向變數的訪問,也就是一種對變數的「間接訪問」。 設一組指針變數pa、pb、px、py、pm、pch1、pch2,分別指向上述的變數a、b、x、y、m、ch1、ch2,指針變數也同樣被存放在內存,盡管所指向的變數類型不同,但是這些指針變數所佔內存空間都是2個位元組,而與所指向變數的類型無關。二者的關系如右圖所示: 在上圖中,左部所示的內存存放了指針變數的值,該值給出的是所指變數的地址,通過該地址,就可以對右部描述的變數進行訪問。如指針變數pa的值為2000,是變數a在內存的地址。因此,pa就指向變數a。變數的地址就是指針,存放指針的變數就是指針變數。
數組:
關於可變長數組(VLA)的問題:原來的C標准中是不允許可變長數組出現的,也就是你說的那個n可變。但是在C99中,加入了對VLA的支持,也有不少編譯器已經支持這個了,而且好像沒有太多的人用這個可變長數組。 如果有過用其它語言編程的經歷,那麼想必會熟悉數組的概念。由於有了數組,可以用相同名字引用一系列變數,並用數字(索引)來識別它們。在許多場合,使用數組可以縮短和簡化程序,因為可以利用索引值設計一個循環,高效處理多種情況。數組有上界和下界,數組的元素在上下界內是連續的。因為 Visual Basic對每一個索引值都分配空間,所以不要不切實際聲明一個太大的數組。 此處數組是程序中聲明的變數數組。它們不同於控制項數組,控制項數組是在設計時通過設置控制項的 Index 屬性規定的。變數數組總是連續的;與控制項數組不同的是,不能從一個數組的中部載入或卸載數組元素。 一個數組中的所有元素具有相同的數據類型(在在C、C++、Java中都這樣。但也並非所有涉及數組的地方都這樣,比如在Visual Foxpro中的數組就並沒這樣的要求)。當然,當數據類型為 Variant 時,各個元素能夠包含不同種類的數據(對象、 字元串 、數值等等)。 可以聲明任何基本數據類型的數組,包括用戶自定義類型(請參閱 「再論編程」中的「創建自己的數據類型」)和對象變數(請參閱「用對象編程」)。 如果要用戶輸入的是一個數組,一般是用一個循環,但是在輸入前也需要固定數組的大小。 compact跟變長數組沒有太大的關系,也應該用不到變長數組。因為一般的傳數組到函數中就是傳數組的地址和元素的個數的,那隻是一個提示,不是要求。 原型可以這樣寫(假設數組的元素是type):
當然,數組名是地址常量,而指針變數是存儲地址的變數,舉個例子吧:
char a[10],*p;
p=a;這樣操作是可以的
5. 在c語言中如何將數組的最大值與最小值互換位置,求大神解答!!!
找到最大和最小值的下標,然後交換,例如:
#include <stdio.h>
main()
{
int a[10]={10,2,3,4,5,6,7,8,9,10},n=10;
int i1,i2,i;
i1=0;
for (i=0;i<n;i++)if (a[i]<a[i1]) i1=i;
i2=0;
for (i=0;i<n;i++)if (a[i]>a[i2]) i2=i;
i=a[i1]; a[i1]=a[i2];a[i2]=i;
for (i=0;i<n;i++) printf("%d ",a[i]);
return 0;
}
6. c語言中數組有什麼作用
所謂數組,是有序的元素序列。數組是在程序設計中,為了處理方便, 把具有相同類型的若干元素按無序的形式組織起來的一種形式。這些無序排列的同類數據元素的集合稱為數組。
比如油煙機的風扇轉速會和工作的模式之間有一定的關系,那麼我們就可以把它的工作模式和一維數組的下標對應起來,我們將具體的轉速放在數組中,這樣的話就非常方便我們在日後查詢。
再比如說家中的冷暖燈光控制這方面,色溫燈里會有兩個燈珠,分別對應的是冷光和暖光,選擇不同的模式燈光的顏色就不同,我們就可以將這兩種燈光的亮度pwm值事先放在二維數組中,以便調用調光。
在程序中合理地使用數組,會使程序的結構比較整齊,而且可以把較為復雜的運算,轉化成簡單的數組來表示。
(6)c語言vla擴展閱讀:
一、使用規則:
1、可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。
2、只能給元素逐個賦值,不能給數組整體賦值。
(請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。)
3、若不給可初始化的數組賦初值,則全部元素均為0值。
4、假如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。
動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
二、表示方法:
數組元素是組成數組的基本單元。
數組元素也是一種變數, 其標識方法為數組名後跟一個下標。下標表示了元素在數組中的順序號。數組元素的一般形式為:數組名[下標] 其中的下標只能為整型常量或整型表達式。
如為小數時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的數組元素。數組元素通常也稱為下標變數。必須先定義數組, 才能使用下標變數。在C語言中只能逐個地使用下標變數, 而不能一次引用整個數組。
7. c語言中怎麼知道輸入整數的位數
vla(變長數組)目前支持的編譯器不多
不過gcc是肯定可以這樣寫的
int
a
=
3,
b
=
4;
int
c[a][b];
gcc以外的編譯器,如果要動態創建數組,還是老老實實用指針malloc吧
8. C語言中一維數組正確的定義
符號常量是用一個標識符來表示一個常量,一維數組的定義方法為:類型說明符+數組名+[常量表達式];
類型說明符是任一種基本數據類型或構造數據類型。數組名是用戶定義的數組標識符。方括弧中的常量表達式表示數組元素的個數或者長度,可以是常量或符號常量,不能為變數。
例如:
1、int x[8]; 表示定義一個整型數組x,數組長度為8.
2、float a[8],b[10];表示定義一個實型數組b,數組長度為8,一個實型數組c,數組長度為10
3、 ch[15]; 表示定義一個字元數組ch,數組長度為15。
(8)c語言vla擴展閱讀
在程序中可以使用下標變數,即說明這些變數的整體為數組,數組中的每個變數的數據類型是相同的。當數組中每個元素都只帶有一個下標時,稱這樣的數組為一維數組。
一維數組是由數字組成的以單純的排序結構排列的結構單一的數組。一維數組是計算機程序中最基本的數組。二維及多維數組可以看作是一維數組的多次疊加產生的。
數組是計算機編程中的重要概念,運用數組可以方便地處理大規模的數據。