定义struct指针类型是什么意思?
typedefstructtagNode*Node{int*a;Nodeb;}啊,简直莫名其妙。定义指针类型的数据类型,定义出来的东西就是默认的指针吗?可是这有什么用呢?...
typedef struct tagNode *Node
{
int *a;
Node b;
}
啊,简直莫名其妙。定义指针类型的数据类型,定义出来的东西就是默认的指针吗?可是这有什么用呢?指针又不能拿来赋值。只能取地址。更不解的这个结构体里面竟然都是指针,难道都要取地址以节省内存空间吗?再说了这本身就是一个指针数据类型,如何用一个普通的数据类型声明一个对象然后取地址赋给Node呢,在我看来这个东西根本没用啊。
再讲讲里面用自己定义了个指针,这是个啥意思啊,定义一个自己的数据类型,那不得无限制赋值啊?
更不解是这种程序竟然没警告,而且貌似还有很多程序应用 展开
{
int *a;
Node b;
}
啊,简直莫名其妙。定义指针类型的数据类型,定义出来的东西就是默认的指针吗?可是这有什么用呢?指针又不能拿来赋值。只能取地址。更不解的这个结构体里面竟然都是指针,难道都要取地址以节省内存空间吗?再说了这本身就是一个指针数据类型,如何用一个普通的数据类型声明一个对象然后取地址赋给Node呢,在我看来这个东西根本没用啊。
再讲讲里面用自己定义了个指针,这是个啥意思啊,定义一个自己的数据类型,那不得无限制赋值啊?
更不解是这种程序竟然没警告,而且貌似还有很多程序应用 展开
4个回答
展开全部
我是没见过这样定义的(直接定义结构指针类型这种做法),结构类型要单独定义的,例如:
typedef struct tagNode
{
int *a;
struct tagNode* b;
} Node;
typedef Node* Node_point;//重命名struct tagNode类型的指针名称
至于结构里用自己类型的指针其实就是链表的表示而已。
还有就你下面那段话,首先指针是可以赋值的,赋值的内容是指针里存储的地址。而且我觉得你对
指针的理解有点出入,例如指针int *p=&a根本与a的值没有任何关系,更谈不上赋值,存的知识a的地址。
typedef struct tagNode
{
int *a;
struct tagNode* b;
} Node;
typedef Node* Node_point;//重命名struct tagNode类型的指针名称
至于结构里用自己类型的指针其实就是链表的表示而已。
还有就你下面那段话,首先指针是可以赋值的,赋值的内容是指针里存储的地址。而且我觉得你对
指针的理解有点出入,例如指针int *p=&a根本与a的值没有任何关系,更谈不上赋值,存的知识a的地址。
追问
指针成员的用处是什么。如果都只是普通的成员的话。typedef struct tagNode Node
{int a;Node b;};Node z;Node *p;z.a=10;p=&z; couta;
这样的指针还是可以用,但是成员变量作为指针,我见过但是不知道真正的用途是什么,也不想一知半解
追答
1)你重命名的写法有误,结构的重命名应该是 typedef struct 用户定义名字{结构内容}重定义后新的名字 ;(具体可以看下我第一次那种写法)
2)结构里结构类型指针有什么用,举个例子,Node是类型名,定义结构指针Node *p和结构变量Node_1,Node_2例如Node Node_1,Node_2;
由于Node_1和Node_2里面都有自己类型的指针,可以使用Node_1.b=&Node_2;让他指向结构对象Node_2,这样就叫完成关联。
而前面定义的p指向Node_1,那么p->b就等同于Node_1.b,所以他指向Node_2,所以(p->b)->a就代表Node_2的a元素,可以对他进行操作。其实这就是链表的思想,也可以说是迭代思想。
推荐于2018-04-13
展开全部
c语言规范,定义结构体:
typedef struct ANSWER_HEADER
{
u8 u8Type;
u8 u8Code;
u32 u32TimeStamp;
struct ANSWER_HEADER *pNext;
}ANSWER_HEADER_T, *PANSWER_HEADER_T;
ANSWER_HEADER为结构名,这个名字主要是为了在结构体中包含自己为成员变量的时候有用;
ANSWER_HEADER_T为struct ANSWER_HEADER的别名;
PANSWER_HEADER_T为struct ANSWER_HEADER*的别名;
结构的定义:
定义一个结构的一般形式为:
struct 结构名
{成员表列};
成员列表的形式为:
类型说明符 成员名;
例如 :
struct stu
{
int num;
char name[20];
char sex;
float score;
};
typedef struct ANSWER_HEADER
{
u8 u8Type;
u8 u8Code;
u32 u32TimeStamp;
struct ANSWER_HEADER *pNext;
}ANSWER_HEADER_T, *PANSWER_HEADER_T;
ANSWER_HEADER为结构名,这个名字主要是为了在结构体中包含自己为成员变量的时候有用;
ANSWER_HEADER_T为struct ANSWER_HEADER的别名;
PANSWER_HEADER_T为struct ANSWER_HEADER*的别名;
结构的定义:
定义一个结构的一般形式为:
struct 结构名
{成员表列};
成员列表的形式为:
类型说明符 成员名;
例如 :
struct stu
{
int num;
char name[20];
char sex;
float score;
};
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
举一个相似的例子,一般指向整型的指针都是如下使用的:
int *p ; 指向一个整型的指针。
如果,在前面我们使用了 typedef int * Pint;
则上面的声明方法,可以改为: Pint p;同样是声明一个指向整型的指针。
上面的结构体是一样的。也同样理解。
int *p ; 指向一个整型的指针。
如果,在前面我们使用了 typedef int * Pint;
则上面的声明方法,可以改为: Pint p;同样是声明一个指向整型的指针。
上面的结构体是一样的。也同样理解。
追问
上面的结构体如何给成员变量赋值?能举个例子吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义出来就是指针,指针谁说不能被赋值的?指针也是变量,可以被赋值。int * a = &b;这不是指针赋值是什么?
结构体成员是指针又有什么不可思议的?‘节省空间估计只是其中一个层面的意思,主要是这个结构在使用过程中就是用该指针成员有想要的用处。
还有下面你说的话我没看懂。
结构体成员是指针又有什么不可思议的?‘节省空间估计只是其中一个层面的意思,主要是这个结构在使用过程中就是用该指针成员有想要的用处。
还有下面你说的话我没看懂。
追问
我没说指针不可以赋值,虽然下面的运行部了,但是能具体表达我的需求
Node a0;
a0->a=10;
couta;
由于数据类型也是个指针,如何以对象.变量的形式赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询