pointerを付け忘れていますとエラーメッセージが出ます。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
やきにくおいしい

pointerを付け忘れていますとエラーメッセージが出ます。

#1

投稿記事 by やきにくおいしい » 3ヶ月前

コード:

/*外部変数を使ったプログラム*/
#include<stdio.h>
int max,min;
void maxmin(int[10]);
int main(void){
	int data[10]={0,2,1,4,3,6,5,8,7,9};
	maxmin(data);
	return 0;
}
void maxmin(int data[10]){
	int i,*p;
	p=data;
	max=*p;
	min=*p;
	for(i=1;i<10;i++){
		if(**p+i>max){
			*max=**p+i;
		}
		else if(*p+i<min){
			*min=**p+i;
		}
		printf("最大値=%d,最小値=%d",max,min);
	}
C言語初心者です。このプログラムを実行したところ、pointerを付け忘れていますとエラーメッセージが表示されました。どうしてでしょうか。

box
記事: 1691
登録日時: 7年前

Re: pointerを付け忘れていますとエラーメッセージが出ます。

#2

投稿記事 by box » 3ヶ月前

コード:

#if 0
こういうことがしたかったのでしょうか
#endif
/*外部変数を使ったプログラム*/
#include<stdio.h>

int max, min;

void maxmin(int data[10]);

int main(void)
{
    int data[10] = { 0, 2, 1, 4, 3, 6, 5, 8, 7, 9 };

    maxmin(data);
    return 0;
}
void maxmin(int data[10])
{
    int i, *p;

    p = data;
    max = min = *p;
    for (i = 1; i < 10; i++) {
        if (*(p + i) > max) {
            max = *(p + i);
        }
        else if (*(p + i) < min) {
            min = *(p + i);
        }
    }
    printf("最大値=%d,最小値=%d\n", max, min);
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6010
登録日時: 7年前
住所: 千葉県
連絡を取る:

Re: pointerを付け忘れていますとエラーメッセージが出ます。

#3

投稿記事 by みけCAT » 3ヶ月前

やきにくおいしい さんが書きました:このプログラムを実行したところ、pointerを付け忘れていますとエラーメッセージが表示されました。どうしてでしょうか。
コンパイラが書かれていないですが、int型のmin、max、*pに対し間接演算子を使っているが、int型はポインタではないのでデリファレンスできないからであると予想できます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る