ポインタを有する構造の場合
書式#include <stdio.hに> 構造体の男 { char型 *の名前。 int型の年齢; }。INT メイン() { 構造体人m = { " トム"、20 }。 printf(" 名前=%sの、年齢=%d個の\ nを" 、m.name、m.age)。 リターン0 ; }
結果:
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ gccのstruct.c -o構造体
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ ./struct
名前=トム、年齢= 20
あなたはm.nameの値を変更した場合
書式#include <stdio.hに> する#include < 文字列の.h> のstruct 男 { 文字 * 名。 int型の年齢; }。INT メイン() { 構造体人m = { " トム"、20 }。 strcpyの(m.name、" マイク" )。 printf(" 名前=%sの、年齢=%d個の\ nを" 、m.name、m.age)。 リターン0 ; }
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ gccのstruct.c -o構造体
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ ./struct
セグメンテーション障害(コアダンプ)
上記のエラー。
ポインタのビット配列を変更します。
する#include <stdio.hに> する#include < ストリング .H> 構造体男性 { チャー名[ 256 ]。 int型の年齢; }。INT メイン() { 構造体人m = { " トム"、20 }。 strcpyの(m.name、" マイク" )。 printf(" 名前=%sの、年齢=%d個の\ nを" 、m.name、m.age)。 リターン0 ; }
コンパイルして実行します。
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ gccのstruct.c -o構造体
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ ./struct
名前=マイク、年齢= 20
分析:
メモリ内の数値の定数を変更することはできません。
する#include <stdio.hに> する#include < 文字列・H> する#include <STDLIB.H> 構造体男性 { CHAR * 名前。 int型の年齢; }。INT メイン() { // 構造体人m = { "トム"、20}。構造体の男メートル。 m.name = malloc関数(はsizeof(CHAR)* 100 )。 m.age = 20 。 strcpyの(m.name、" マイク" )。 printf(" 名前=%sの、年齢=%d個の\ nを" 、m.name、m.age)。 リターン 0 ; }
コンパイルして実行します。
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ gccのstruct.c -o構造体
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ ./struct
名前=マイク、年齢= 20
する#include <stdio.hに> する#include < 文字列・H> する#include <STDLIB.H> 構造体男性 { CHAR * 名前。 int型の年齢; }。INT メイン() { 構造体男*のP = malloc関数(はsizeof(構造体男性))。 P - >名前=のmalloc(はsizeof(CHAR)* 100 )。 strcpyの(P - >名前、" トム" ); P - >年齢= 30 ; printf(" 名前=%sは、年齢=%d個の\ n "、P->名、P-> 年齢); (Pフリー - > 名); (P)フリー; 戻り 0 ; }
ポインタメモリストレージ:
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ gccのstruct.c -o構造体
exbot @ Ubuntuの:〜/ wangqinghe / C / 20190714 $ ./struct
名前=トム、年齢= 30
終わり