//-Wall -Wextra -Wpedantic -Wshadow #include #include typedef struct{ char a; int b; }TestStruct; void TestF1( TestStruct s ) { printf(" (F1) %c %d\n", s.a, s.b ); } void TestF2( TestStruct *p_s ) { printf(" (F2) %c %d\n", p_s->a, p_s->b ); } void TestF3( TestStruct *p_s ) { TestStruct s = *p_s; printf("(F3a) %c %d\n", s.a, s.b ); s.a = 'd'; s.b = 231; printf("(F3b) %c %d\n", s.a, s.b ); } void TestF4( TestStruct *p_s ) { p_s->a = 'b'; p_s->b = 321; } void TestV( char *p_a, int *p_i ) { *p_a = 'c'; *p_i = 312; } int main() { TestStruct tsts; tsts.a = 'a'; tsts.b = 123; printf(" (1) %c %d\n", tsts.a, tsts.b ); TestStruct *p_ts; p_ts = &tsts; printf(" (2) %c %d\n", p_ts->a, p_ts->b ); TestF1(tsts); TestF1(*p_ts); TestF2(&tsts); TestF2(p_ts); TestF3(&tsts); TestF3(p_ts); printf(" (3) %c %d\n", tsts.a, tsts.b ); printf(" (4) %c %d\n", p_ts->a, p_ts->b ); TestF4( &tsts ); printf(" (5) %c %d\n", tsts.a, tsts.b ); printf(" (6) %c %d\n", p_ts->a, p_ts->b ); tsts.a = 'c'; tsts.b = 132; printf(" (7) %c %d\n", tsts.a, tsts.b ); printf(" (8) %c %d\n", p_ts->a, p_ts->b ); TestF4( p_ts ); printf(" (9) %c %d\n", tsts.a, tsts.b ); printf(" (10) %c %d\n", p_ts->a, p_ts->b ); char c = 'a'; int i = 1; printf (" (11) %c %d\n", c, i); TestV(&c,&i); printf (" (12) %c %d\n", c, i); return 0; } /* output: (1) a 123 (2) a 123 (F1) a 123 (F1) a 123 (F2) a 123 (F2) a 123 (F3a) a 123 (F3b) d 231 (F3a) a 123 (F3b) d 231 (3) a 123 (4) a 123 (5) b 321 (6) b 321 (7) c 132 (8) c 132 (9) b 321 (10) b 321 (11) a 1 (12) c 312 */