激凹みから立ち直る方法

こんにちは。

C言語の「ポインタのポインタ」の学習中なのですが、以下のプラグラムがエラーが出てしまします。
if文が間違っていると思うのですが、具体的に何がどう間違っているのがわかりません。
ご教示お願いいたします!

#include<stdio.h>

int main(void)
{
int date = 300;
int *pdate = NULL;
int **ppdate = NULL;

printf("dateの値は%d<\n", date);

pdate = &date;

printf("*pdateの値は%d<\n", *pdate);

if(**ppdate = NULL){
printf("**ppdateには何も与えられていません。\n");
}

else{
return 0;
}

ppdate = &pdate;

if(**ppdate == 300){
printf("**ppdateの値は%dになりました。正常です。\n", **ppdate);
}

/*強制終了を避けるためのプログラム*/
int i;
scanf("%d", &i);

return 0;
}

A 回答 (5件)

>if(**ppdate = NULL){



代入になっているのはおかしい。
というのは既に指摘されてますが…。

NULLポインタアクセスになってませんかね?
*は不要かと思いますが。
    • good
    • 0

もう回答がつてしまってますけど、



>C言語の「ポインタのポインタ」の学習中なのですが、以下のプラグラムがエラーが出てしまします。

「エラーが出てしまいます。」では他の人にはどういったエラーが出ているのかわかりません。
どういったエラーなのか他の人にわかるように説明しましょう。

また「ポインタのポインタ」の学習中と書かれていますが、まずはポインタをしっかり理解しましょう。
ポインタをしっかり理解してるなら「ポインタのポインタ」の学習なんて不要です。
    • good
    • 0

#3です。


int **ppdate = NULL;
のとき、
NULLが設定されるのは、ppdateです。

**ppdateにNULLが設定されるわけではありません。

int** ppdate= NULL;
int** 型のppdateがあり、
ppdateにNULLが設定される。
と考えてください。
    • good
    • 0

if(**ppdate = NULL){


printf("**ppdateには何も与えられていません。\n");
}


if(ppdate == NULL){
printf("ppdateには何も与えられていません。\n");
}
に替えてください。
    • good
    • 0

if(**ppdate = NULL){


if(**ppdate == NULL){
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報