私は最高値のアドレスを検索し、アドレスに値を増やし、配列を作成します。C配列、ポインタのセグメンテーションフォールト
:int main()
{
int i[5] = {2,5,6,5,3};
int *pi = getAdres(i);
(*pi)++;
printf("%d", i[2]);
return 0;
}
getAdres()
機能は次のようになります
int getAdres(int *i)
{
int *pi;
int higest = 0;
for(int j = 0; j < 5; j++)
{
if(i[j] > higest)
{
pi = &i[j];
higest = i[j];
}
}
return pi;
}
getアドレス部分を機能に組み込むことなく機能しますが、現在の形式では(*pi)++;
は私にセグメンテーションフォールトを与えています。 何が問題になりますか?
のように呼び出すことができます '場合(I [J]> higest)'真なることはありませんか?あなたは何を返していますか? –
また、コンパイラの警告に注意してください! –
あなたの関数は 'int'を返しますが、' int * 'を返すべきです。おそらく起こるのは、 'int *'が 'int'に切り詰められてsegfaultが発生するということです。 – usr