C言語の、下記の練習問題を解いていて、
アウトプットがなぜ下記のようになるのか教えて頂けないでしょうか?
該当のアウトプット:m=2, p=3, out.x=7, out.y=5, out.str= !
C言語
1#include <stdio.h> 2#define SIZE 11 3 4struct Q9 { 5 int x; 6 int y; 7 char str[SIZE]; 8}; 9 10void foo(struct Q9* z, int a, int b, const char* ss) { 11 int i = SIZE - 1; //10 12 int j = 0; 13 a *= 2; 14 b += a; 15 z->x = b; 16 z->y = ++a; 17 18 while (i >= 0) { 19 z->str[j++] = ss[i--]; 20 } 21} 22 23int main(void) 24{ 25 26 char in[] = "1234567890"; 27 int m = 2; 28 int p = 3; 29 struct Q9 out = { 0 }; 30 31 foo(&out, m, p, in); 32 printf("m=%d, p=%d, out.x=%d, out.y=%d, out.str=%s !\n", m, p, out.x, out.y, out.str); 33 34 return 0; 35}
mとpの結果が2と3になることは理解ができるのですが、それ以外の値がなぜそうなるのか理解に苦しんでいます。
また、void foo(struct Q9* z, int a, int b, const char* ss)の部分で、
"z"はなぜ int Z ではないのでしょうか?
struct Q9* zとすることで構造体とどのような関係になるのでしょうか?
初心者のため、初歩的な質問で申し訳ないです。。よろしくお願いいたします。