[C基礎-構造と関数]
構造体と関数
関数とプログラムは密接な関係である.
こうぞうたいでんたつ
構造体をパラメータとして渡すには2つの方法がある.ポインタで伝達し、構造体に従って伝達する.
構造体の場合、ポインタはパラメータ伝達とは異なります.構造体は多様な資料型を組み合わせた新しい資料型であるため,構造体のサイズが大きいほど必要な複製空間が大きくなる.
したがって,空間的浪費により効率が低下し,構造体をパラメータで伝達する際には通常ポインタが用いられる.
(値を変更する必要がなくても)
#include <stdio.h>
typedef struct {
int s_id;
int age;
} Student;
void print_student(Student s){
s.s_id = 2000;
s.age = 25;
printf("학번 : %d, 나이 : %d\n", s.s_id, s.age);
}
int main(){
Student s;
s.s_id = 1000;
s.age = 20;
print_student(s);
printf("학번 : %d, 나이: %d\n", s.s_id, s.age);
}
しゅつりょく
学号:2000、年齢:25
学号:1000、年齢:20
出力例
print student関数の値は変更された値として出力されますが、メイン関数の値は変更されません.したがって、2番目の出力は元の値を出力します.
関数のポインタ伝達コード
#include <stdio.h>
typedef struct {
int s_id;
int age;
} Student;
void print_student(Student *s){
s->s_id = 2000;
s->age = 25;
printf("학번 : %d, 나이 : %d\n", s->s_id, s->age);
}
int main(){
Student s;
s.s_id = 1000;
s.age = 20;
print_student(&s);
printf("학번 : %d, 나이: %d\n", s.s_id, s.age);
}
しゅつりょく
学号:2000、年齢:25
学号:2000、年齢:25
Reference
この問題について([C基礎-構造と関数]), 我々は、より多くの情報をここで見つけました https://velog.io/@fredkeemhaus/C-기초-구조체와-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol