以下程序有兩種結構。我不明白我怎麼可以從一個結構變量的值傳遞到另一個結構體變量,而使用指針兩種結構如何以這種方式工作
#include <stdio.h>
typedef struct {
int c;
char d;
}bob;
typedef struct {
int c;
char d;
}anna;
//expecting 'bob' type variable
void fun(bob *var2)
{
printf("var2->c=%d\n",var2->c);
printf("var2->d=%c\n",var2->d);
}
int main()
{
anna var1;
var1.c=2;
var1.d='c';
fun(&var1);//passing 'anna' type pointer
return 0;
}
...但如果我更改程序使用普通的變量傳遞值,它使編譯錯誤。
#include <stdio.h>
typedef struct {
int c;
char d;
}bob;
typedef struct {
int c;
char d;
}anna;
//expecting a variable of type 'bob'
void fun(bob var2)
{
printf("var2.c=%d\n",var2.c);
printf("var2.d=%c\n",var2.d);
}
int main()
{
anna var1;
var1.c=2;
var1.d='c';
fun(var1);//passing a variable of type 'anna'
return 0;
}
這是什麼邏輯?