对于教学动机,我想构建一个指向整数的指针,我从指向typedef的指针中取一个模型(下面(1)中的工作示例)但是(0)处的示例给出了消息“错误: '='token“之前的语法错误”at ptr =& a;我无法理解为什么。我将感谢纠正。代码是:
(0)//代码失败
#include <stdio.h>
typedef int *ptr;
int main(){
int a;
ptr =&a; //<-----"error: syntax error before '=' token"
a =2;
printf("%d\an",a);
return 0;
}
(1)//工作代码
#include <stdio.h>
typedef struct sum {
int a,b,c;
} mytype;
int main(){
mytype sum_operation;
mytype *ptr;
ptr = &sum_operation;
(*ptr).a = 1;
(*ptr).b = 3;
(*ptr).c =(*ptr).b + (*ptr).a ;
printf("%d\n",(*ptr).c);
return 0;
}
答案 0 :(得分:4)
此语法:
typedef int *ptr;
不是指向typedef的指针。您正在定义一个名为ptr
的新类型,它是一个指向整数的指针。
此语法:
ptr = &a;
相当于:
int* = &a; // error: syntax error before '=' token
哪个不正确,因为您必须指定变量名称:
ptr myPointer = &a
相当于:
int* myPointer = &a;
答案 1 :(得分:0)
如果要声明变量,则需要为其命名:
ptr b = &a;
// ^ This part.