NULLの扱いについて教えてください

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

NULLの扱いについて教えてください

#1

投稿記事 by すすむ » 18年前

C言語初心者で、プログラム勉強中です。
わからないことがありますので教えてください。
いろいろ試しているのですができないのです。
下記のようにNULLを引数で渡したい時は送り側は
どのようにしたらよろしいのでしょうか?。
できれば解説付きで教えてください。
#include <stdio.h>
typedef struct susumu {
int test1;
int test2;
int test3;
} SUSUMU;
void test1(SUSUMU test);

int main()
{
SUSUMU test;

test.test1 = 1;
test.test2 = 2;
test.test3 = 3;

test1(NULL);
return 0;
}
void test1(SUSUMU test1)
{
if(&test1 = NULL){
 printf("%d",12345);
}
}

YuO

Re:NULLの扱いについて教えてください

#2

投稿記事 by YuO » 18年前

NULLはポインタですから,
---- 引用開始 ----
void test1(SUSUMU test);
---- 引用終了 ----
を,
void test1 (SUSUMU * test);
として,
---- 引用開始 ----
void test1(SUSUMU test1) 
{ 
if(&test1 = NULL){ 
 printf("%d",12345); 
} 
}
---- 引用終了 ----
は,
void test1 (SUSUMU * test)
{
    if (test == NULL) { /* Cの比較演算子は=ではなく==です */
        printf("%d", 12345);
    }
}
のようにします。

すすむ

Re:NULLの扱いについて教えてください

#3

投稿記事 by すすむ » 18年前

ご回答ありがとうございます。
私の質問が足りませんでした。
test1(NULL);の関数は変えないで
呼び側を変えてNULLを渡したいのです。
そんなことできますか?。

何度もすいませんが、ご教授お願い致します。

YuO

Re:NULLの扱いについて教えてください

#4

投稿記事 by YuO » 18年前

・構造体を変化させず,非ポインタ型の引数のままにしたいのであれば,NULLを渡す事をあきらめる
・構造体を変化させず,NULLを渡したいのであれば,引数をポインタ型にする
この2択です。
空ポインタ定数とはどういうものか,ちゃんと考えてみて下さい。

# Null-Object patternという方法もあるものの,CでやるとSUSUMUを利用する箇所全体に影響を及ぼしそうなので……。

YuO

Re:NULLの扱いについて教えてください

#5

投稿記事 by YuO » 18年前

ぐはっ……最悪……。
「初心者のためのポイント学習C言語」さんの掲示板2#8022とのマルチポストか……。


閉鎖

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