程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言 segmentation fault

C語言 segmentation fault

編輯:C語言問答

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裡跑過了,應該沒問題,另外建議樓主在基本概念方面再多加鞏固
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved