置頂
動態陣列
剛接觸動態配置的部分,如問了蠢問題見諒謝大大!
為何*array宣告成int就會掛掉?只有char能通過...
void main()
{
int x, num,_scanf;
char *array; //這裡為何不能宣告成int
printf("請輸入陳列大小:");
scanf("%d", &x);
array = malloc(x, sizeof(*array));
for (int i = 0; i < x;i++)
{
printf("請輸入陳列位置%d的數值:",i);
scanf("%d",&_scanf);
array[i] = _scanf;
}
for (int i = 0; i < x; i++)
{
printf("array[%d]=%d\n", i, array[i]);
}
free(array);
system("PAUSE");
return 0;
}
up vote
0
因為他會把array是為一個int的變數,因此會出現int[int]不符合c語言的debug訊息。
意思就是如果array被定義為是一個數字,假如是6,那就會出現6[0],6[1]......是一個矩陣,然而這個矩陣是無效的。
建議要做動態記憶體配置使用vector比較好。
up vote
2
#include <stdio.h>
int main()
{
int x, num, _scanf;
int *array;
printf("請輸入陳列大小:");
scanf("%d", &x);
array = (int*)malloc(x*sizeof(int));
for (int i = 0; i < x; i++)
{
printf("請輸入陳列位置%d的數值:", i);
scanf("%d", &_scanf);
array[i] = _scanf;
}
for (int i = 0; i < x; i++)
{
printf("array[%d]=%d\n", i, array[i]);
}
free(array);
system("PAUSE");
return 0;
}
up vote
1
宣告成 int* array[ ] 試試看吧
會員登入
(先登入會員才能回覆留言喔!)
