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

c語言-C語言指針小問題求大神

編輯:編程綜合問答
C語言指針小問題求大神

#include"stdio.h" //求N名同學最高分然後輸出該同學的分數和學號
#define N 10
void finemax(int *p,int *q,int k)
{
int i,*m,*n;
*m=*p;
*n=*q;
for
(i=0;i小於k;i++)
{
if(*p>*m)
{*m=*p;*n=*q;}
p++;
q++;
}
printf("最高分是:%d,學號為:%d\n",*m,*n);
}
int main()
{
int i,k,a[N],b[N]; //數組a存學生成績,b存學號。
printf("請輸入要計算同學數量:");
scanf("%d",&k);
printf("請分別輸入同學的成績和學號:\n");
for(i=0;i<k;i++)
{
scanf("%d",&a[i]);

scanf("%d",&b[i]);
}
finemax(a,b,k);
return 0;
}
圖片說明
幫忙分析一下原因

最佳回答:


問題出在 int i,*m,*n;。你這樣聲明 m,和n,他倆是指針類型,並沒有分配內存空間。然後你就進行*m=*q,這句話的意思是把q指向的內存的值賦值給m指向的內存,但是此時m並沒有分配內存,這樣就產生了錯誤。
你應該這樣聲明m,n。 int m,n。不要聲明稱指針類型。不知道這樣說你明不明白

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved