構造体
オンライン開発環境【paiza.io】にサンプルプログラムを入力・実行しながら確認しました。
#include <stdio.h>
struct member{
char *name;
int age;
}taro , hanako;
int main() {
struct member jiro;//次郎追加
taro.name = "太郎";
taro.age = 50;
hanako.name = "花子";
hanako.age = 40;
jiro.name = "次郎";
jiro.age = 30;
printf("名前\t年齢\n");
printf("%s\t%d\n" , taro.name , taro.age);
printf("%s\t%d\n" , hanako.name , hanako.age);
printf("%s\t%d\n" , jiro.name , jiro.age);
return 0;
}
配列型構造体変数
#include <stdio.h>
struct member {
char *name;
int age;
};
int main() {
struct member ary[3];
ary[0].name = "太郎";
ary[0].age = 50;
ary[1].name = "花子";
ary[1].age = 40;
ary[2].name = "次郎";
ary[2].age = 30;
int ary_num = 1;
if ((ary_num >= 0) && (ary_num <= 2)) {
printf("名前\t年齢\n");
printf("%s\t%d" , ary[ary_num].name , ary[ary_num].age);
}
else printf("エラー");
return 0;
}
構造体変数コピー
#include <stdio.h>
struct copy {
char *str;
int var1;
double var2;
}st_var1;
int main() {
st_var1.str = "abcdef";
st_var1.var1 = 1000;
st_var1.var2 = 1.23456;
struct copy st_var2;//var2追加
st_var2 = st_var1; //var2にコピー
printf("str = %s\n" , st_var2.str);
printf("var1 = %d\n" , st_var2.var1);
printf("var2 = %g" , st_var2.var2);
return 0;
}
構造体変数と関数
#include <stdio.h>
struct member{
char *name;
int age;
}taro , hanako;
void func(char *);
int main() {
struct member jiro;//次郎追加
taro.name = "太郎";
taro.age = 50;
hanako.name = "花子";
hanako.age = 40;
jiro.name = "次郎";
jiro.age = 30;
func(hanako.name);
return 0;
}
void func(char *name) {
printf("%s",name);
}
#include <stdio.h>
struct member{
char *name;
int age;
}taro , hanako;
void func(struct member);
struct member member (char * , int);
int main() {
struct member jiro;//次郎追加
taro.name = "太郎";
taro.age = 50;
hanako.name = "花子";
hanako.age = 40;
jiro.name = "次郎";
jiro.age = 30;
printf("名前\t年齢\n");
func(taro);
func(hanako);
func(jiro);
return 0;
}
void func(struct member hito ) {
printf("%s\t%d\n", hito.name , hito.age);
}
struct member member (char *name , int age) {
struct member hito;
hito.name = name;
hito.age = age;
return hito;
}
#include <stdio.h>
struct member{
char *name;
int age;
}taro , hanako;
void func(struct member);
struct member member (char * , int);
int main() {
struct member jiro;//次郎追加
taro = member("太郎" ,50);
hanako = member("花子" ,40);
jiro = member("次郎" ,30);
printf("名前\t年齢\n");
func(taro);
func(hanako);
func(jiro);
return 0;
}
void func(struct member hito ) {
printf("%s\t%d\n", hito.name , hito.age);
}
struct member member (char *name , int age) {
struct member hito;
hito.name = name;
hito.age = age;
return hito;
}
#include <stdio.h>
// 構造体
struct person1 {
char *name;
char sex;
int age;
char *add;
char *job;
};
// 構造体
typedef struct person {
char *name;
char sex;
int age;
char *add;
char *job;
} person2;
// 一括代入用の関数
person2 init(char *name, char sex, int age, char *add, char* job) {
person2 p2;
p2.name = name;
p2.sex = sex;
p2.age = age;
p2.add = add;
p2.job = job;
return p2;
}
int main(void) {
// 構造体の実体を生成
struct person1 tanaka;
tanaka.name = "T.Tanaka";
tanaka.sex = 'm';
tanaka.age = 30;
tanaka.add = "Tokyo";
tanaka.job = "teacher";
printf("%sは%d歳で、%sで%sをしています\n", tanaka.name, tanaka.age, tanaka.add, tanaka.job);
// 構造体の実体の生成と一括初期化
person2 sato = {"S.Sato", 'f', 25, "Osaka", "nurse"};
/* error: expected expression before '{' token sato = {"S.Sato", 'f', 25, "Osaka", "nurse"};*/
printf("%sは%d歳で、%sで%sをしています\n", sato.name, sato.age, sato.add, sato.job);
// 関数で一括代入
sato = init("K.Sato", 'm', 35, "Nagoya", "doctor");
printf("%sは%d歳で、%sで%sをしています\n", sato.name, sato.age, sato.add, sato.job);
return 0;
}
構造体ポインタ アロー演算子 ( -> )
#include <stdio.h>
struct {
int var;
}obj , *po;
int main() {
po = &obj;
obj.var = 100;
printf("%d" , po->var);
return 0;
}
#include <stdio.h>
struct member {
char *name;
int age;
};
struct member member(char * , int);
void write(struct member *);
int main() {
struct member taro = member("taro", 50);
struct member hanako = member("hanako" , 40);
printf("名前\t年齢\n");
write(&taro);
write(&hanako);
return 0;
}
struct member member(char name[] , int age) {
struct member obj;
obj.name = name;
obj.age = age;
return obj;
}
void write(struct member *obj) {
printf("%s\t%d\n" , obj->name , obj->age);
}
#define マクロ名 文字列(マクロ名 大文字)
#include <stdio.h>
#define MAX 3
int main() {
int ary[MAX] , count;
for (count = 0 ; count < MAX ; count++) {
#define KAZU 1
ary[count] = KAZU + count;
printf("%d " , ary[count]);
}
return 0;
}
#undef マクロ名(マクロ名を未定義)
#include <stdio.h>
#define JIRO "jiro"
int main() {
#ifdef JIRO
printf(JIRO);
#endif
#undef JIRO
#ifdef JIRO
printf(JIRO);
#else
printf(" sato");
#endif
return 0;
}
#define マクロ名(引数リスト) 処理
#include <stdio.h>
#define ADD(a , b) ((a) + (b))
int main() {
int c;
c = ADD(2 * 3 , 4 / 2);
printf("%d" , c);
return 0;
}
組み込みマクロ
#include <stdio.h>
int main() {
printf("LINE = %d\n" , __LINE__);
printf("FILE = %s\n" , __FILE__);
printf("DATE = %s\n" , __DATE__);
printf("TIME = %s\n" , __TIME__);
return 0;
}
条件コンパイル
#include <stdio.h>
#define DEBUG 1
int main() {
#if DEBUG
printf("1:真\n");
#else
printf("0:偽\n");
#endif
printf("CLOW CARD");
return 0;
}
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
0 件のコメント:
コメントを投稿