Function 指向函数的指针指向结构,指向函数的指针指向typedef

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;

下面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;

  (*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”提供给结构,并使用该别名类型创建对象,然后对该别名类型进行正常操作


另外,你的评论是不正确的。如果只更改一条语句,代码将无法工作。

单击左侧的勾号箭头接受答案。您有电子邮件吗?我怎么联系你?