void型別的指標指向結構體,如何用->引用結構體內部元素
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泛型指標的時候一樣要定義新的變數進行強制型別轉換
如有問題,歡迎指正,感謝