合計 昨日 今日
インフォメーション: 当サイトは3/3~3/4に大規模なメンテを実施し大幅リニューアルします。そのため3/3~3/4に長時間の利用停止時間が発生します。ご了承ください。

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

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: やきにくおいしい
[URL]
Date: 2018年2月03日(土) 21:37
No: 1
(OFFLINE)

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

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*外部変数を使ったプログラム*/
#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=;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を付け忘れていますとエラーメッセージが表示されました。どうしてでしょうか。

Name: box
[URL]
ハッカー(265,144 ポイント)
Date: 2018年2月03日(土) 21:48
No: 2
(OFFLINE)

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

コード[C]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#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);
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

Name: みけCAT
[URL]
伝説なるハッカー(693,644 ポイント)
Date: 2018年2月03日(土) 21:52
No: 3
(OFFLINE)

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

やきにくおいしい さんが書きました:このプログラムを実行したところ、pointerを付け忘れていますとエラーメッセージが表示されました。どうしてでしょうか。

コンパイラが書かれていないですが、int型のmin、max、*pに対し間接演算子を使っているが、int型はポインタではないのでデリファレンスできないからであると予想できます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[21人]