54 lines
No EOL
1.4 KiB
C
54 lines
No EOL
1.4 KiB
C
#include <stdio.h>
|
|
#include <float.h>
|
|
|
|
struct PlayStruct {
|
|
int int_value;
|
|
double double_value;
|
|
char a_string[64];
|
|
};
|
|
|
|
void print_struct(struct PlayStruct ps, struct PlayStruct* pps)
|
|
{
|
|
printf("Values of struct ps: %d, %lf, %s\n", ps.int_value, ps.double_value, ps.a_string);
|
|
printf("Values of struct pps %d, %lf, %s\n", pps->int_value, pps->double_value, pps->a_string);
|
|
}
|
|
|
|
void change_struct(struct PlayStruct ps, struct PlayStruct* pps)
|
|
{
|
|
ps.int_value = 2;
|
|
ps.double_value = 3.0;
|
|
|
|
pps->int_value = 4;
|
|
pps->double_value = 5.0;
|
|
}
|
|
|
|
void print_string(char string_to_print[])
|
|
{
|
|
printf("%s\n", string_to_print);
|
|
}
|
|
|
|
void change_string(char string1[], char *p_string)
|
|
{
|
|
string1[2] = '\0';
|
|
p_string[1] = '\0';
|
|
}
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
struct PlayStruct play_struct = {1, 2.0, "Hello!"};
|
|
|
|
print_struct(play_struct, &play_struct);
|
|
change_struct(play_struct, &play_struct);
|
|
//only the struct from the pointer will be changed, the other one doesnt, as it is a local var
|
|
print_struct(play_struct, &play_struct);
|
|
|
|
print_string(play_struct.a_string);
|
|
char another_string[16] = "World!";
|
|
|
|
change_string(play_struct.a_string, another_string);
|
|
print_string(play_struct.a_string);
|
|
print_string(another_string);
|
|
//both will be changed, because they are both pointers
|
|
|
|
return 0;
|
|
} |