-1

僕にできる

write(&'\n', 1); 

そしてそれは同等ですか

char a = '\n';
write(&a, 1);

これをファッション的にどのように解決しますか?

最初の引数として char 配列のみを受け取り、その次元を 2 番目の引数として取る関数を使用して、改行文字を書き込もうとしています (\0有効な書き込み可能な文字であるため、次元を指定する必要があります) 。

4

4 に答える 4

1

文字リテラルのアドレスを取得できない理由は、コンパイラが実際にそれを文字の実際の ASCII 値 (この場合は 10) に置き換えるためです。コードは実際には次のようになります。

write(&10, 1);

また、数値リテラルのアドレスを取得することはできません。これは、メモリに保存されているのではなく、実際に生成されたコードの一部である可能性が高いためです。

于 2012-09-13T12:36:59.693 に答える
1

他の人がすでに指摘しているように、文字リテラルのアドレスを取得することはできません。

文字配列は通常、ゼロで終了する必要があるため、できたとしても、それは間違った型になります。

あなたが探しているものは次のとおりです。

書き込み ("\n", 1);

于 2012-09-13T12:39:38.720 に答える
1

あなたはこれを行うことができます:

write("\n", 1); 
于 2012-09-13T12:39:50.953 に答える
0

あなたが求めているのは、2つの異なることです:

'\n'は文字リテラルであり、整数リテラルとして扱われます。

char a文字変数です。

リテラルではなく、変数のアドレスを取得できます。

于 2012-09-13T12:41:09.353 に答える