2015-04-01 60 views
1

我是C新手,我試圖在運行時根據用戶輸入初始化數組元素(所以如果用戶輸入4,那麼array [0] = 4)。在運行時初始化數組元素

我有以下代碼:

#include<stdio.h> 
#define MAX 10 
#define maxValue 100 

int array[MAX]; 
int n; 
int main(void){ 
    scanf("%d", n); //asks for array value 
    if (n <= maxValue) 
    { 
     array[0] = n; 
    } 
    return 0; 
} 

代碼編譯,但觸發訪問衝突。 有什麼問題?

+3

'的scanf( 「%d」,&n);' – 2015-04-01 23:27:58

+2

你應該n的地址傳遞給'scanf()的' – 2015-04-01 23:28:05

+3

請嘗試找到標誌。它允許你使用的編譯器向你發出這樣的問題警告:使用GCC,一個明智的選擇是使用'-Wall'來捕獲大量這樣的錯誤,其他的編譯器可能需要其他的選項 – 2015-04-01 23:30:56

回答

2

您應該將& n傳遞給scanf。

scanf("%d", &n); 

正如喬納森指出的那樣,這很容易被編譯器警告捕獲。對於GCC,你可以使用-Wall它會告訴你:

warning: format specifies type 'int *' but the argument has type 
    'int' [-Wformat] 
scanf("%d", n); //asks for array value 
     ~~ ^
+0

我完全忘記了運營商的地址!這樣一個noob錯誤。代碼現在工作。感謝您的幫助。 – 2015-04-01 23:44:21