C語言 segmentation fault
int input(int a[])
{
int i=0,input=0;
while(a[i]!=-999)
{
input++;
i++;
}
return input;
}
int main(void)
{
int value[101]={0};
printf("%d\n",input(value));
return 0;
}
編譯通過,運行時報:segmentation fault
望高手指點,對代碼中的錯誤給予指正,謝謝
最佳回答:
1.第一行int input(int a[]),不能傳數組名進入函數,應改為傳指針
2.沒有頭文件
3.函數體內部循環沒設邊界
4.變量名函數名重復
因此,應改正為
#include <stdio.h>
#include <iostream>//以上兩行頭文件
int calcuinput(int * a)//建議把函數名和變量名區別開,否則編譯器可能分不出來
{
int i=0,input=0;
while(a[i]!=-999)
{
input++;
i++;
if(i==101)break;//控制邊界,否則就變成死循環了
}
return input;
}
int main(void)
{
int value[101]={0};
int * p=value;//這兒賦一個指針
printf("%d\n",calcuinput(p));//傳參改成傳指針,前面函數定義相應做改動
system("pause");
return 0;
}
已經在win7下的VS裡跑過了,應該沒問題,另外建議樓主在基本概念方面再多加鞏固