void类型的指针指向结构体,如何用->引用结构体内部元素
2018-02-28 16:25
357 查看
C语言允许void(泛型指针)等于其他任何类型的指针,但是当:void*p = struct str *p1;(即令void类型的指针等于结构体类型的指针)用p->使用内部元素的时候,编译器在编译的时候会报错
解决办法:重新定义结构体指针变量进行强制类型转换
举例:
1 #include<stdio.h>
2 #include<stdlib.h>
3
4 typedef struct{
5 int a;
6 int b;
7 } str;
8
9 int main (intargc, char *argv[])
10 {
11 void *p;
12 str *st, *st1;
13
14 st = (str *)malloc(sizeof(str));
15 st->a = 23;
16 st->b = 24;
17 p = st;
18 st1 = (str *)p;
19 printf("%d\n%d\n",st1->a,st1->b);
20
21 free(st);
22 return 0;
23 }
同样在函数中使用void泛型指针的时候一样要定义新的变量进行强制类型转换
如有问题,欢迎指正,感谢
解决办法:重新定义结构体指针变量进行强制类型转换
举例:
1 #include<stdio.h>
2 #include<stdlib.h>
3
4 typedef struct{
5 int a;
6 int b;
7 } str;
8
9 int main (intargc, char *argv[])
10 {
11 void *p;
12 str *st, *st1;
13
14 st = (str *)malloc(sizeof(str));
15 st->a = 23;
16 st->b = 24;
17 p = st;
18 st1 = (str *)p;
19 printf("%d\n%d\n",st1->a,st1->b);
20
21 free(st);
22 return 0;
23 }
同样在函数中使用void泛型指针的时候一样要定义新的变量进行强制类型转换
如有问题,欢迎指正,感谢
相关文章推荐
- 指向结构类型数组元素的指针
- 如何获取变量类型及void指针中保存的指针指向什么类型的变量
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
- 指针->指针所指向的类型
- c语言中,在结构体中如何将void *转存为具体需要的数据类型
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- error C2064: 项不会计算为接受 2 个参数的函数 1> 类不会将“operator()”或用户定义的转换运算符定义到指向函数的指针或指向函数的引用(它们接受适当数量的参数
- void空类型指针仅传地址无指向操作
- 【php数组函数序列】之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
- python作用域的补充,局部引用全局作用域的修改尝试,可变类型内部可修改,内存指向不可变
- 如何让ArrayList<Integer>添加一个String类型的元素呢
- php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
- 编写程序定义一个vector 对象,其每个元素都是指向string 类型的指针,读 取该vector 对象,输出每个string 的内容及其相应的长度。
- 指向void类型的指针
- 结构体元素做函数参数和结构指针做函数参数
- 【php数组函数序列】之key() - 获取数组内部指针当前指向元素的键名
- 如何理解函数形参为指针和引用类型的参数传递
- 智能指针里弱引用应该如何实现?(WeakReference/WeakPtr<T>)
- 关于结构体二级指针引用时必须加括号的问题 (*L)->next,而不是*L->next