構造体を試してみようとしていて、問題が発生しました。ポインタを使用して構造体メンバの文字配列にデータを割り当て、コンパイラがエラーを投げています: "配列型の式への代入"。私のコードでは、配列は静的メモリ割り当てを使用し、ポインタは動的メモリ割り当てにmallocを使用することがわかります。問題を解決する方法を身体から教えてもらえますか?あなたの例ではCode for passing the structure pointer to a function to print the structure dataポインタを使用して構造体メンバの文字配列にデータを代入する
-1
A
答えて
0
あなたはstrcpyのを使用できるように、「C」は、20バイトの配列である:
strcpy(struct_pointer->c, "hellos");
-1
「helloパケット」はCHAR [20]と同じタイプではないので、あなたがすべきことを忘れないでくださいこの方法を試してください。
strcpy(struct_pointer->c, "hellos");
代わり割り当てのconst char*
変数
0
あなたのコード
にstruct_pointer->c="hellos"
実際に次の操作を実行するようにコンパイラに指示します - ので、コンパイラ苦情が完全に有効で、すでに割り当てられている、文字列"hellos"
とNULLターミネータ用のメモリを割り当て、struct_pointer->c
に、このメモリへのポインタを割り当てます。 Cではあなただけの別の配列にchar型の配列を割り当てることはできません、あなたは例えば、メモリコピー機能のいずれかのタイプを使用する必要が
strcpy(struct_pointer->c, "hellos")
In my code I know that an array uses static memory allocation and pointer uses malloc for dynamic memory allocation
それはCであなたが得ることはありません、そのようではありませんmalloc
またはその変形を明示的に呼び出さない限り、自動ダイナミックメモリの割り当てを行いません。 "hellos"
のメモリもスタックに割り当てられます
関連する問題
- 1. 「ポインタを使用して構造体の配列にアクセスする」
- 2. 構造体ポインタ内の構造体ポインタ配列内のインデックスに値を代入する
- 3. 構造体メンバへのポインタ
- 4. C関数を使用して構造体の文字列要素に文字列値を代入する
- 5. strcpyを使って文字列をポインタの演算子を介して構造体のメンバにコピーする
- 6. ポインタを使って構造体のメンバにアクセスする
- 7. C++で構造体配列のメンバであるメンバ関数ポインタを呼び出す構文は何ですか?
- 8. 構造体のアドレスを他の構造体のポインタに代入する
- 9. cgo構造体配列を使用して値を代入する
- 10. ポインタを使用して構造体メンバにアクセスする際のガベージデータ
- 11. 構造体にポインタを持つ構造体へのポインタの配列
- 12. 構造体ポインタを使用して構造体内部の配列にアクセスする方法
- 13. Cの構造体の配列にアドレスを代入する
- 14. 構造体のメンバ変数への(通常の)ポインタを構造体全体へのポインタに変換する
- 15. ポインタを使って構造体の配列と構造体の配列を返す -
- 16. 構造体の配列内の構造体へのポインタ
- 17. 構造体の文字配列
- 18. Angularjs ng-repeatを使用して構造体に配列データを配置する
- 19. ポインタ配列に構造体ポインタを追加する
- 20. 構造体ポインタのメモリ割り当て配列を配列
- 21. 構造体に文字列のポインタを持つ
- 22. 配列のポインタを使用しているC++アクセスクラスの構造体
- 23. 構造体の配列へのポインタ
- 24. 構造体へのポインタのC配列
- 25. 構造体、ポインタの配列[C++ Beginner]
- 26. 構造体配列のポインタ初期化
- 27. ポインタ付きのC++構造体配列
- 28. ポインタ構造体の値を代入する
- 29. 構造体配列に文字列をコピーし
- 30. 構造体へのポインタの配列へのポインタを返す