//-Wall -Wextra -Wpedantic -Wshadow
#include <stdio.h>
#include <stdlib.h>
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
*/
Comments