
No.1ベストアンサー
- 回答日時:
だいたいおっけ~。
でも、・void main() → int main(); で、main() の最後に return 0;
・main() の char *p = 0x00; の初期化は意味がない。もしするとしたら p = NULL
・exit() は引数を省略できない
・malloc() の戻り値を確認するのは、0x00 より NULL の方が良い
というあたりが気になります。また、
> また解放されているか確認する方法はあるのでしょうか?
C言語一般としては、確認する方法がありません。コンパイラによっては手段が用意されていることがあります。
No.7
- 回答日時:
ポインタとは何か?ということを理解してからでないと
ポインタを引数に持つ関数を呼び出すのは難しいと思います。
char a;
char *b;
char **c;
× c=&a;
○ c=&b;
× *c=a;
○ *c=b;
○ *c=&a;
ということです。
No.6
- 回答日時:
> 下位への引数をダブルポインタにしなければなぜ上位で参照できないのでしょうか?
> 仕様でしょうか?それとも根本的に無理だからでしょうか?
void increment(int x) { ++x; }
int a = 3;
increment(a);
このコードで、aを4にすることができないでしょ?
それと同じ事。
> free(p)が正しいのですか。もし下位でfreeするのであれば、free(*p)となるのでしょうか?
void exaFree(void** p) {
free(*p);
}
char* p;
exaMalloc(&p);
exaFree(&p);
...ってことです
No.5
- 回答日時:
> 0x00とNULLって何か違うのでしょうか?
コンパイラによっては、0 だったり (void*)0 とマクロで定義されていますが、規格で保証されているわけではありません。
# 実際に NULL が -1 と定義されている処理系もあり
また malloc() は、割り当てに失敗すると、無効なポインタを表す定数 NULL を返すことになっており、0 を返すと決められているわけではありません。
ただ、C++ の規格では、整定数 0 をポインタに変換すると、無効なポインタとして扱うように、と決められています。なので、NULL が -1 という処理系でも
char* p = 0;
とやると、*正しく* 無効なポインタを指すことになります。
# C では、どうだったか忘れました (^^;
No.4
- 回答日時:
MSVC++では
#define NULL 0
であり、まったく同じ。
その他の仕様では、下の方の言ってるとおり。
私みたいなやつは、NULLを書くとソースが横に長くなって見にくいので、NULLを書くべきところに0を書いたりします。
が、あんまいいことだとは思ってません(笑。
ちなみに#define NULL 0でないような仕様では
char *p = 0x00;
はエラーです。
ちなみに0x00はまったく0と変わりありません。
No.3
- 回答日時:
こんにちは。
NULLは、コードでは、「0x0」ですが、C言語の
扱いでは、「(void*)0x0)」で、ポインタを意味
します。
もし、
int a;
memset( &a , NULL , sizeof( int ));
とすると、コンパイラによってはエラーになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の配列とポインタについて...
-
C言語の習得度別お勧め参考書
-
参照型で受け取った引数をポイ...
-
CImage GetBitsメソッドについて
-
戻り値で構造体を返すことは可...
-
va_listを使用したfscanf()関数...
-
ハンガリアン記法は廃れた?
-
fopne で失敗する原因
-
C言語のポインタに直接アドレス...
-
free()への引数について
-
#define NULL ((void *)0) の弊害
-
main(int argc,char **argv[])...
-
連結リスト 要素の入れ替え
-
無効なポインタ操作のエラー
-
セグメントエラー
-
Windowプログラミング lParam...
-
C言語 配列の長さの上限
-
VBA基本構文の作り方 2列の...
-
銀行ATMの数字キーの配列
-
C++で入力した文字列から数字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインタに直接アドレス...
-
戻り値で構造体を返すことは可...
-
ExcelVBAでのkernel32(64bit)
-
Run-Time Check Failure #3とい...
-
init関数の意味
-
fopne で失敗する原因
-
セグメントエラー
-
参照型で受け取った引数をポイ...
-
LPSTR型の初期化について
-
VC++6.0 MFC ダイアログバーを...
-
ハンドルはポインタか
-
c言語で任意のファイルから読み...
-
【なぜポインタを使うのか】
-
無効なポインタ操作のエラー
-
CImage GetBitsメソッドについて
-
アプリを32bitから64bit移行
-
C++ vectorのbeginについて
-
ポインタについて
-
DLL<->VB間での受け渡し(文字...
-
NULLポインタが0でない処理系と...
おすすめ情報