2016-06-29 7 views
-1

構造体を試してみようとしていて、問題が発生しました。ポインタを使用して構造体メンバの文字配列にデータを割り当て、コンパイラがエラーを投げています: "配列型の式への代入"。私のコードでは、配列は静的メモリ割り当てを使用し、ポインタは動的メモリ割り当てにmallocを使用することがわかります。問題を解決する方法を身体から教えてもらえますか?あなたの例ではCode for passing the structure pointer to a function to print the structure dataポインタを使用して構造体メンバの文字配列にデータを代入する

答えて

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"のメモリもスタックに割り当てられます

関連する問題