0
我的C程序編譯並在PuTTY中正常運行,直到第二次重複循環。一位擁有相同代碼的朋友似乎可以讓他的程序工作,我甚至試着改變我的代碼和他的代碼之間的差異,但仍然沒有雪茄。下面列出的是代碼以及執行代碼時會發生什麼的示例。我相信這個問題在malloc聲明中。達到循環第二次迭代後的分段錯誤
#include<stdlib.h>
#include<stdio.h>
void getInts(int ** integersArray, int * numInput);
int main() {
int * integersArray;
int numInput;
int i;
getInts(&integersArray, &numInput);
for (i = 0; i < numInput; i++) {
printf("number %d = %d\n", i+1, integersArray[i]);
}
return 0;
}
void getInts(int ** integersArray, int * numInput) {
int i;
printf("Please enter the number of intergers you want to input\n");
scanf("%d", numInput);
*integersArray = (int *) malloc(sizeof(int) * *numInput);
for (i = 0; i < *numInput; i++) {
printf("please enter integer %d: ", i+1);
scanf("%d", (integersArray[i]));
}
}
輸出
Please enter the number of intergers you want to input
4
please enter integer 1: 2
please enter integer 2: 3
Segmentation fault (core dumped)
什麼是你想用做'* numInput'?雙重乘法? NumInput是一個int,而不是一個指針,所以你不能使用它的內容。 – Mawg
@Mawg不正確。該參數是'int * numInput'。 –
對不起,我找到了以前的聲明。我的壞,你的+1。在這種情況下,我建議關注編譯器警告,運行'cppcheck',來自:http://cppcheck.wiki.sourceforge.net/然後在調試器中逐步完成 – Mawg