首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于一级指针强转void*的有关问题.求解答

2013-07-09 
关于一级指针强转void**的问题..求解答~char* string abcdefghijkvoid* v_str_p ((void**)string)[

关于一级指针强转void**的问题..求解答~
char* string = "abcdefghijk";
void* v_str_p = ((void**)string)[0];    //强制转换为二级指针...其实这里应该是一个 void* array[]    array中每个元素都是一个void*

疑问是我如何解开 v_str_p 这个void* 指针...而拿到他实际的value...
我的想法是 *((char*)v_str_p + ?)   来拿到其中一个元素...    但是这样却不对....请高手为我解答一下 ,小弟感激不尽~~~
指针
[解决办法]


       char* string = "abcdefghijk";
void* v_str_p = ((void**)string)[0];
int i = (int)v_str_p;
char* p = (char*)&i;
printf("%c%c%c%c\n", p[0], p[1], p[2], p[3]); //abcd

不要折腾自己的脑细胞咯.
[解决办法]
引用:
Quote: 引用:

char* string = "abcdefghijk";
void* v_str_p = ((void**)string)[0];    //强制转换为二级指针...其实这里应该是一个 void* array[]    array中每个元素都是一个void*

疑问是我如何解开 v_str_p 这个void* 指针...而拿到他实际的value...
我的想法是 *((char*)v_str_p + ?)   来拿到其中一个元素...    但是这样却不对....请高手为我解答一下 ,小弟感激不尽~~~



struct Array_T {
        int length;
        int size;
        char *array;
};

struct Seq_T {
        struct Array_T array;
        int length;
        int head;
};
typedef struct Seq_T *Seq_T;

void *Seq_get(Seq_T seq, int i) {
        assert(seq);
        assert(i >= 0 && i < seq->length);
        return ((void **)seq->array.array)[(seq->head + i)%seq->array.length];
}

就像这个函数的return的void* 一样..那它这么做有什么意义呢?  已经无法找到这个sring了呢....

按照你的说法 v_str_p 只留下了 sizeof(void)  ?


他这样写我只想到一个原因,就是Array_T中的array其实并不是一个char*,而仅仅用来指向一个动态分配的内存块,至于内存块里面放的是什么东西,那就取决于访问代码。在上面这段代码中,这个内存块被看成是一具void*数组。(

热点排行