C语言指向结构体的指针

#include<stdio.h>
struct node{
int num;
char name[10];
}a;
int main(){
struct node *p
p = &a;
}
我知道p表示的是结构体a中num的地址,好奇地想问一下*p表示什么呢,比如printf("%d", *p),输出的那个数字表示什么呢?


    C语言中的结构体
    在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

    定义与声明
    结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。

    结构体成员的引用

    有两种方式,英文的句点 . ,一个减号加一个大于号 ->。

    当结构体是一个指针时要引用结构体的成员就用-> 而如果不是指针就用.。

    如:
    struct msg_st {
          int a;
    };
    struct msg_st  msg;
    struct msg_st *ms;
    msg.a = 10;
    ms->a = 20;




温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-16
只能说p指向了a,即p的值就是a的地址,通常&a就是a中第一成员的地址:
(int)&a == (int)(&a.num)
但两者有重要区别:值相同但类型不同
&a的类型为:struct node*
&a.num的类型为:int*
struct node b = *p; //即*p结果是一个struct node对象,不是int型也就不能用%d来输出
第2个回答  2019-09-16
如果你按%d输出,那么是把结构体开始的四个字节当作一个整数来解释
如果结构体定义第一个成员恰好就是一个整数,例如
struct s{int i;}
那它就是i的值,如果不是这样,而是其他类型的成员,比如
struct t{char s[10];}
那么会出现一些你不能理解的数字,但它仍然是个数字,任何一段4字节内存,你都可以当作一个整数来解释,他就是一个数,只不过当他原本并不是整数时,你错解了它的含义,而且你不知道它是个啥。

C语言中->是什么意思啊?
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。

结构体最后大括号后面跟两个指针
一、指向结构体的指针 结构体最后大括号后面跟一个指针时,表示这个结构体上面的所有变量都可以被指针指向。这种指针通常称为指向结构体的指针,可以使用它来访问结构体中的所有成员。下面是一个例子:struct student { char name[20];int age;float score;} *p;int main() { struct student s = {...

C语言结构体指针和—>的意思,以下语句从左往右什么意思啊
->这个符号是指针的意思,也就是说dpp是个指针,它指向act,而act又指向action_data,打个比方,一个公园里有个厕所,你想进这个厕所,首先你要找到这个公园,进了公园之后你才能找到这里的厕所,dpp->act->action_data就是这个意思,

c语言关于指向结构体的指针的理解
Polynomial *p 那p就是一个指向“PolyNode结构体指针”的指针。typedef struct { ...}*Polynomial;这说明Polynomial是定义指针类型的,指向对象是这个结构体。Polynomial p;就是定义了一个指向这种结构体的指针。

c语言中的指针是什么?
表示成员选择(指针),选择结构体的成员变量。1、结构:运算符 -> 是指向结构体成员运算符,结合方向为自左向右。2、用法:对象指针->成员名。举例说明如下:

C语言-结构体指针及结构体嵌套
在C语言中,结构体是一种复合数据类型,与数组和基本类型相似,允许定义指向该类型对象的指针。结构体指针的声明方式遵循常规类型定义格式,例如:struct 结构体名 * 指针名;例如,定义了一个名为person的结构体,包括姓名(char数组)和年龄(int),同时声明一个指向person的指针p:struct person {char ...

文件指针 跟 指向结构体的指针 有什么区别?(C语言)
文件指针是指向struct FILE的指针(类型为struct FILE*),是指向结构体的指针的其中一种。FILE是C语言中默认用来表示文件信息的结构体,在stdio.h中有定义,具体内容和运行环境(平台)相关。当打开一个文件时,文件内容由库函数记录到一个FILE结构体中,而用户可以通过库函数返回的struct FILE*类型的...

c语言中->是什么意思?如;s->i[0]=0x39;这句话是什么意思?
估计是这样:s是指向结构体的指针,结构体包含了一个整型数组i[x],这条语句就是把十六进制的39赋给s所指结构体的i数组的第一个变量。十六进制的39换成我们常用的十进制是:3*16^1+9*16^0 = 57

c语言->是什么意思
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。换种说法,如果在C语言中定义了一个结构体,申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。问题中的p=p->next ,意思是将p指向的一个结构体实例中的自数据next赋值给p。

C语言中 -> 是什么意思
rp是一个结构体指针(或其他一个整体的指针)、他指向一个结构体、就相当于你家的地址 nr_running是rp所指向结构体的一个成员、好比你家中的房间1 rp->nr_running说的就是你家的1号房间 "."的作用和"->"差不多 "."前面是变量名(或其他名称)而"->"前面是地址、指针 比如说 你家.1号...

相似回答