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);
}
}
NULLの扱いについて教えてください
Re:NULLの扱いについて教えてください
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の扱いについて教えてください
ご回答ありがとうございます。
私の質問が足りませんでした。
test1(NULL);の関数は変えないで
呼び側を変えてNULLを渡したいのです。
そんなことできますか?。
何度もすいませんが、ご教授お願い致します。
私の質問が足りませんでした。
test1(NULL);の関数は変えないで
呼び側を変えてNULLを渡したいのです。
そんなことできますか?。
何度もすいませんが、ご教授お願い致します。
Re:NULLの扱いについて教えてください
・構造体を変化させず,非ポインタ型の引数のままにしたいのであれば,NULLを渡す事をあきらめる
・構造体を変化させず,NULLを渡したいのであれば,引数をポインタ型にする
この2択です。
空ポインタ定数とはどういうものか,ちゃんと考えてみて下さい。
# Null-Object patternという方法もあるものの,CでやるとSUSUMUを利用する箇所全体に影響を及ぼしそうなので……。
・構造体を変化させず,NULLを渡したいのであれば,引数をポインタ型にする
この2択です。
空ポインタ定数とはどういうものか,ちゃんと考えてみて下さい。
# Null-Object patternという方法もあるものの,CでやるとSUSUMUを利用する箇所全体に影響を及ぼしそうなので……。