- ベストアンサー
NULLで初期化
C言語で char name[256]; のnameをNULLで初期化する場合どういう記述になりますか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- notnot
- ベストアンサー率47% (4855/10270)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
関連するQ&A
- 配列のNULL初期化について
C言語についての課題の一部です。 int型の配列 iArrayをNULL初期化したいのですが、 課題では下のように書かれています。 &iArray[] = NULL; このような書き方でNULL初期化することは可能なのでしょうか?
- ベストアンサー
- C・C++・C#
- C言語にて構造体のメンバがNULLであるかを判定するサンプルを作成して
C言語にて構造体のメンバがNULLであるかを判定するサンプルを作成しています。 一応目的の動作はするのですが、プログラミングとして正しいか教えて頂ければと 思います。 <test.c> int main() { /* ---------------------------------------- */ /* 構造体のメンバ(NULL保障無し)がNULLか */ /* 比較するサンプル */ /* ---------------------------------------- */ char buf[50]; /* サンプル構造体 */ struct ST_test { int cd; char name[10]; int no; }; struct ST_test st_test; /* 構造体定義 */ memset(&st_test,0x00,sizeof(st_test)); /* 構造体初期化 */ memset(&buf[0],0x00,sizeof(buf)); /* 構造体初期化 */ /* 構造体に値セット */ st_test.cd = 12; memcpy(&st_test.name[0],"aabbccddee",sizeof(st_test.name)); st_test.no = 999; /* NULL判定 */ if(*st_test.name == 0x00) { printf("NULLです\n"); } else { printf("NULLではないです\n"); } return (0); }
- ベストアンサー
- C・C++・C#
- C言語にて、以下のような配列を定義した場合の初期化(0埋め)方法が分か
C言語にて、以下のような配列を定義した場合の初期化(0埋め)方法が分からずに困っています。 char name[50][30]; <現在やっている事> memset(&name[0][0], 0x00, sizeof( name )); 上記の方法では、sizeofの値が正しくないように思っている (正しい値は30と考えています)のですが、 正しくはどのように行うものでしょうか。 どなたか教えていただけると幸いです。 以上ですが、よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- NULLポインタは0と書かなければだめ?
C++言語を使っています。 C++言語でNULLポインタを表す場合、0やNULLを使用しますが、 「NULLは単なるマクロなので本来は0を使わなければだめ」という話を聞きました。 つまり、 int *p = 0; が本当の正しいNULLポインタであり、 int *p = NULL; は推奨されていない(?)NULLポインタというようです。 今まであまり疑うことなく、NULLポインタを表すのにNULLを使用していましたが、 上記の内容は本当でしょうか。
- ベストアンサー
- C・C++・C#
- 「NULLポインタ」と「演算の結果としてのアドレス0」との比較
ものすごく基本的な疑問です。。。 「C言語FAQ日本語訳」http://www.kouno.jp/home/c_faq/ ここの「05.ヌルポインター」を見ると以下のような意味の記述があります。 「NULLポインタは他のどんなポインタの値とも区別可能で、有効なポインタと比較しても等しくなる事はない」 「ポインタを書くべき場所に書かれた定数0はコンパイル時にNULLポインタに変換される」 そこで以下のプログラムを Borland C++ 5.5 for Win32 でコンパイル・実行してみたところ、 p1 == p2 とりました。これって変ですよね? p1 は明示的に定数0で初期化しているのでNULLポインタですが、p2 は演算の結果としてアドレス0番地を指しているので、NULLポインタでは無いですよね? これはコンパイラが間違っていると思って良いのでしょうか? #include <stdio.h> int main() { char *p1,*p2; p1 = 0; p2 = (char *)1; p2--; if(p1 == p2){ printf("p1 == p2"); } else{ printf("p1 != p2"); } return 0; }
- ベストアンサー
- C・C++・C#
- Null同士の結合
お力貸してください。 [Table111] データA データB データC Name111 Null 1 5 あああ 2 Null 6 いいい 3 4 7 ううう [Table222] データA データB データC Name222 Null 1 5 AAA 2 Null 6 BBB 3 4 7 CCC Table111とtable222をデータAとデータBとデーターCの3つで結合して 新しいテーブルをつくりたいです。 [TableC] データA データB データC Name111 Nam222 Null 1 5 あああ AAA 2 Null 6 いいい BBB 3 4 7 ううう CCC Nullもデーターとして認識させたいのですが、うまくいきません。 できれば、新しくテーブルを作ったりしたくないです。 お知恵をかしてください。よろしくおねがいします。
- ベストアンサー
- その他(データベース)
- static付き宣言の初期化
static付きの宣言をした場合の変数の初期化について教えてください。(ANSI-C) int func(void) { static int si; static char sca[10]; static char *scp; /* 何らかの処理 */ return 0; } このように関数内でstatic付きで宣言したとき、変数はどのように初期化されますか? siは0、sca[0]からsca[9]までは'\0'、scpはNULLで初期化されますか? また、このようなstatic付きの宣言が関数の外にあった場合は、どのように初期化されますか?
- ベストアンサー
- C・C++・C#
- argvのNULLチェック
argvの値がNULLかどうかチェックしたいのですが 記述は以下で合っていますでしょうか? int main(int argc, char *argv[]){ /* パラメタのNULLチェック */ if(strcmp(argv[1] == NULL) = 0){ printf(argv[1]はNULLです); } *********************************** 上記の比較のように、argv[1] == NULL で出来ますか? argv[1] == '\0' でしょうか? }
- ベストアンサー
- C・C++・C#