c语言中,如何实现指向任意数据类型的指针?
假如一个指针*p,要指向一堆数据int a=1;
float b=1.2345;
short c=1234;
long d=1234567;
......................
......................
......................
这堆数据里有int,float,long等任意的数据类型。
要怎么才能让指针指向任意的数据类型呢? void *p??? 楼主,C语言应该系统的学一下,特别是指针部分。C语言的精华就在指针。
指向任意类型的指针类型是void * p,具体使用时再转换为具体的类型。
void * p = &ch;
char * pch = (char *)p; 同楼上 void *p
p = &a;
使用的时候记得指定类型
printf("%d\n",*(int *)p);
p = &b;
printf("%f\n",*(float*)p); 本帖最后由 hack3er 于 2013-3-29 10:09 编辑
mengfc 发表于 2013-3-29 09:51 static/image/common/back.gif
楼主,C语言应该系统的学一下,特别是指针部分。C语言的精华就在指针。
指向任意类型的指针类型是void * p ...
谢谢,void *这个我知道,但是有时候也不好用。
比如使用的时候数据类型不确定或无规律呢?
假如如下的情况:
void *p1,*p2;
unsigned char i;
unsigned char a1=3;
unsigned char a2=4;
char b1=5;
char b2=6;
unsigned short c1=34567;
short c2=4578;
float d1=5.354;
long d2=64545487;
switch(i)
{
case 0:
p1=&a1;
p2=&a2;
break;
case 1:
p1=&b1;
p2=&b2;
break;
case 2:
p1=&c1;
p2=&c2;
break;
case 3:
p1=&d1;
p2=&d2;
break;
}
然后每次不同i的情况下使用*p1,*p2
数据的类型都是不一样的,难道每次都手工去指派数据类型么?
假如有N多的变量,但是某一状态下只要用到其中一两个。
每次都要手工去干预数据类型的指派,多费事?
这样的话,还不如直接赋值来的快。
有没有什么办法让不同i的时候知道转成对应的数据类型? 感觉像C++里面的多态机制;
这样用不怕出危险? jm2011 发表于 2013-3-29 10:21 static/image/common/back.gif
感觉像C++里面的多态机制;
这样用不怕出危险?
那处理某状态下只用多数据中的某一两个数据(数据类型不一定一样)有什么好的方法?
难道只能取值->缓存->再赋值?
这样很费程序空间的。。 顶起,沉的真快。。。 用union来实现 snower 发表于 2013-3-29 10:59 static/image/common/back.gif
用union来实现
能详细些? 这样是不安全的用法,不知道数据类型怎么做处理?知道了数据类型就意味着传递的时候已经指明了数据类型,既然已经指明了那这个问题就不存在了.5L提到的问题,在C里面没有办法解决. union {
struct {
unsigned char a1;
unsigned char a2;
};
struct {
char b1;
char b2;
};
struct {
unsigned short c1;
short c2;
};
struct {
float d1;
long d2;
};
} data;
data.d1 = 5.354;
data.d2 = 64545487;
页:
[1]