Function 指向函数的指针指向结构,指向函数的指针指向typedef
下面pointer\u to_structure.c中的代码工作正常,但pointer\u to_type-def.c中的代码工作不正常,我不理解错误 我会感谢任何修改代码的人 指向结构c的指针Function 指向函数的指针指向结构,指向函数的指针指向typedef,function,pointers,typedef,Function,Pointers,Typedef,下面pointer\u to_structure.c中的代码工作正常,但pointer\u to_type-def.c中的代码工作不正常,我不理解错误 我会感谢任何修改代码的人 指向结构c的指针 #include <stdio.h> struct sum { int a,b,c; } sum_operation,*ptr; int main(){ ptr = &sum_operation; (*ptr).a = 1; (*ptr).b = 3;
#include <stdio.h>
struct sum {
int a,b,c;
} sum_operation,*ptr;
int main(){
ptr = &sum_operation;
(*ptr).a = 1;
(*ptr).b = 3;
(*ptr).c =(*ptr).b + (*ptr).a ;
printf("%d\n",(*ptr).c);
return 0;
}
#include <stdio.h>
typedef struct sum {
int a,b,c;
}sum_operation,*ptr;
int main(){
ptr = &sum_operation; //this should be changed
(*ptr).a = 1;
(*ptr).b = 3;
(*ptr).c =(*ptr).b + (*ptr).a ;
printf("%d\n",(*ptr).c);
return 0;
}
#包括
结构和{
INTA、b、c;
}求和运算*ptr;
int main(){
ptr=&sum_操作;
(*ptr).a=1;
(*ptr)b=3;
(*ptr.c=(*ptr.b+(*ptr.a);
printf(“%d\n”,(*ptr.c);
返回0;
}
指向类型定义c的指针
#include <stdio.h>
struct sum {
int a,b,c;
} sum_operation,*ptr;
int main(){
ptr = &sum_operation;
(*ptr).a = 1;
(*ptr).b = 3;
(*ptr).c =(*ptr).b + (*ptr).a ;
printf("%d\n",(*ptr).c);
return 0;
}
#include <stdio.h>
typedef struct sum {
int a,b,c;
}sum_operation,*ptr;
int main(){
ptr = &sum_operation; //this should be changed
(*ptr).a = 1;
(*ptr).b = 3;
(*ptr).c =(*ptr).b + (*ptr).a ;
printf("%d\n",(*ptr).c);
return 0;
}
#包括
类型定义结构和{
INTA、b、c;
}求和运算*ptr;
int main(){
ptr=&sum_operation;//这应该更改
(*ptr).a=1;
(*ptr)b=3;
(*ptr.c=(*ptr.b+(*ptr.a);
printf(“%d\n”,(*ptr.c);
返回0;
}
当您使用
typedef struct sum {
int a,b,c;
}sum_operation,*ptr;
这相当于宣布
struct sum {
int a,b,c;
};
typedef struct sum sum_operation;
因此,sum_操作
现在变成了typedef
。因此,不能使用指针获取求和操作的地址,因为它只是一种类型。你需要使用
sum_operation another;
sum_operation *ptr;
然后你就可以做了
ptr = &another;
这应该行得通
#include <stdio.h>
typedef struct sum {
int a,b,c;
} mytype;
int main(){
mytype sum_operation;
mytype *ptr;
ptr = &sum_operation; //this should be changed
(*ptr).a = 1;
(*ptr).b = 3;
(*ptr).c =(*ptr).b + (*ptr).a ;
printf("%d\n",(*ptr).c);
return 0;
}
#包括
类型定义结构和{
INTA、b、c;
}mytype;
int main(){
mytype-sum_运算;
mytype*ptr;
ptr=&sum_operation;//这应该更改
(*ptr).a=1;
(*ptr)b=3;
(*ptr.c=(*ptr.b+(*ptr.a);
printf(“%d\n”,(*ptr.c);
返回0;
}
提示:当您使用typedef时,它会为该结构创建一个类型别名。因此,sum_操作是代码中的一种结构。在固定代码中,使用typedef将别名“mystruct”提供给结构,并使用该别名类型创建对象,然后对该别名类型进行正常操作
另外,你的评论是不正确的。如果只更改一条语句,代码将无法工作。单击左侧的勾号箭头接受答案。您有电子邮件吗?我怎么联系你?