C语言指向结构体的指针

Python024

C语言指向结构体的指针,第1张

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

指向结构体成员运算符 : (->) 从外部看是包含了一个解指针(*)所以要对指针进行操作

例如:

typedef struct

{

int data[20]

int length

}Sqlist

Sqlist

*L

L->lenth

//同样是得到L中length的值

结构体成员运算符 : ( . )直接调用结构体中的某个成员

例如:

typedef struct

{

int data[20]

int length

}Sqlist

Sqlist L

L.length //直接调用L中length的值

L.data[3]

扩展资料:

结构体成员的点运算符(.)和箭头运算符(->)的区别:

相同点:两个都是二元操作符,其右操作符是成员的名称。

不同点:点操作符左边的操作数是一个“结果为结构”的表达式;箭头操作符左边的操作数是一个指向结构的指针。

如果一个函数的传入参数是结构体,且需要该结构体作为返回值的时候,必须采用指针传递的方式,其中对结构体赋值必须使用箭头运算符。

参考资料:

百度百科-->

菜鸟教程-C++ 运算符

我就用自己的理解给你讲一下吧

指针其实就是指向一个变量的变量,具体的说,一个指针它里面保存的是一个变量的地址,而一般的变量保存的是数据,所以指针它的本质也是变量.

指向指针的指针就是一个指针它指向另外一个指针变量,它保存的是另外一个指针的地址,指向指针的指针其实和一般的指针没什么两样,只是它保存的是另一个指针,一般的指针保存的是地址,指向指针的指针访问数据时是间接访问,是通过它保存的指针来进行访问,比一般的指针多了一个中间量,它可以进行**P的运算,而一般的指针的运算为*p,

不知道我的表达能力如何???

如有不懂,请给我发消息