關於無型別指標的使用

2021-08-18 16:19:47 字數 627 閱讀 4076

今天在工作時發現程式有可以優化的地方,程式中本來有乙個結構體a,然後a這個結構體中包含了若干個結構體bcdef等等。本意是將這若干個結構體的資料通過socket傳送出去,原本每乙個結構體都會有乙個傳送函式,現在想將它優化成乙個傳送函式。

那麼問題來了?

這個函式的形參怎麼設定?

指向結構體中的結構體的指標?

苦思冥想不得,然後看到memcpy以及memset中的void*,就想到了使用這個無型別指標。

首先介紹一下:

(type *)vp;

那麼它的作用呢?

下面是我在vs2015上測試通過的乙個demo,本意是通過void* ,將結構體中的資料複製到buff中去。

#include#includetypedef struct

test1;

typedef struct

test;

int length = 0;

char buff[4];

test testtype;

void teststruct(void *pstart, void *pend)

void main()

無型別與無型別指標

無型別,又為抽象型別 沒有對應的實體,不能直接定義變數,但可以定義指標。1 失去指標指向的功能 2 p指標此時不具有 1的能力。在gcc編譯器下,無型別指標課加1。void 是一種特別的指標,因為它沒有指向的型別,或者說不能根據這個型別判斷出指向物件的長度。void 指標具有以下特點 1.任何指標 ...

無型別的指標

void malloc size t size 開闢一塊連續size位元組的空間引入 int a 3 int a int malloc 3 sizeof int int i for i 0 i 3 i a i i for i 0 i 3 i printf d a i free a int n,i p...

無型別指標void 的學習與使用

c c 中的指標通常來說有兩個屬性 1.指向變數 2.指向物件的位址和長度 指標其實就是儲存被指向變數的位址,並不儲存其長度 而且存的這個位址僅是變數的首位址,並不是該變數佔據記憶體的所有位址空間。如 目前大多數的c c 編譯環境中,整型int資料佔4個位元組的空間,如上圖所示。所以指標p儲存的位址...