[解決済み] 構造体は何が特別なのか?
2023-06-12 23:09:41
質問
C言語では関数から配列を返すことはできませんが、配列へのポインタを返すことができることは知っています。しかし、私は何を知りたいのです
structs
が配列を含んでいても関数から返せるようにする特別なことは何なのかを知りたいのです。
なぜ
struct
のラップが次のプログラムを有効にしているのでしょうか?
#include <stdio.h>
struct data {
char buf[256];
};
struct data Foo(const char *buf);
int main(void)
{
struct data obj;
obj = Foo("This is a sentence.");
printf("%s\n", obj.buf);
return 0;
}
struct data Foo(const char *buf)
{
struct data X;
strcpy(X.buf, buf);
return X;
}
どのように解決するのですか?
同じ質問をするのによりよい方法は、「配列の何が特別なのか」ということです。
struct
s.
ポインタによる配列の受け渡しの動作は、C言語の最初の実装にまでさかのぼります。配列はポインタに対してquot;decay"し、特にこの言語を初めて使う人々の間ではかなりの混乱を引き起こしました。一方、構造体は、組み込み型と同じように振る舞います。
int
s,
double
など。の中に埋め込まれた配列も含まれます。
struct
を除いて
フレキシブル配列のメンバ
のように、コピーされない。
関連
-
警告:符号付き整数式と符号なし整数式の比較 [-Wsign-compare]
-
[解決済み] Code::Blocks アプリケーションをコンパイルできない
-
[解決済み] CコードでEOFを表現する?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] CとC++でmain()は何を返すべきですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Cエラー [エラー] 代入_Ashesの左オペランドにlvalueが必要です-プログラマーズ・シークレット
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
[解決済み] munmap_chunk(): 無効なポインタ
-
[解決済み] "static const" vs "#define" vs "enum"
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] 演算子 *, /, +, -, % を使わずに 3 で割る。
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み] .aファイル、.soファイルとは何ですか?
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?
-
[解決済み] C言語で "unsigned long "をprintfする方法は?