关于声明结构体内部指向结构体类型指针变量的问题。

#include<stdio.h>structjgt//声明结构体{intn;structjgt*x;//指向结构体类型的指针变量};intmain(void){stru... # include <stdio.h>
struct jgt//声明结构体
{
int n;
struct jgt * x;//指向结构体类型的指针变量
};
int main (void)
{
struct jgt * head;//结构体指针变量
head->x= head;
//head->x= 78;//这里为什么可以直接给指针赋值的?
printf ("%p\n%d\n"head->x,head->x);//输出head->x的地址和值
return 0;
}
为什么head->x可以直接给指针赋值?指针变量不是只可以存地址的吗?
焦躁中...50分送上~
展开
 我来答
戴月繁星心自孤
2015-01-02 · TA获得超过123个赞
知道答主
回答量:88
采纳率:0%
帮助的人:82万
展开全部
struct grade *student;\\/\\/是声明一个指向grade数据类型的指针。指针的名字叫student.\r\nstruct grade student;\\/\\/声明一个结构体的变量,变量名叫student。\r\nstruct grade student[N];\\/\\/声明一个大小为N的结构数组。\r\n怎么会多了个" * " , 这*号是属于struct grade的,还是属于student的?\r\n这个*是属于(struct grade)的,*说明student是一个指向这个结构的指针。就像int *p;p是一个指向int类型的指针道理一样,不知道这样解释我的意思讲明白了没?
追问
我知道的,可是int *p,p不能直接给它赋值的吧,例如p=3,这样会报错的吧,可我的那个程序结构体里的那个x指针变量,在函数里访问x时确可以直接赋常量值,也可以赋地址值,这是为什么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式