指向typedef类型指针的整数类型指针

时间:2014-02-01 00:23:44

标签: c pointers typedef

对于教学动机,我想构建一个指向整数的指针,我从指向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;
}

2 个答案:

答案 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.