關於填充void buf的一次小總結

2021-05-23 22:24:50 字數 881 閱讀 6699

要求是這樣的:

void *是某個函式的指標(fun(void * result)).

result的格式是這樣的,乙個int值,若干個物件指標

假設是obj型別的物件

1,首先,我試了這種方法

obj * p = null;

memcpy(result,p)

這樣是出問題的。因為memcpy並不是將p的指標內容拷到result,而是將p指向的內容(也就是null)拷過去

這也說明我在程式設計的時候,有個問題,想當然的做事,不嚴謹。

2,然後我用了這種方法

(obj*)result = p

這種方法也是不對的,因為result是左值,不能被改變。

3。用了結構體方法

struct  aaa 

int     x;

obj * p;

}a;a a;

memcpy(result,&a,sizeof(a));

但是這樣,解決不了解析時候問題

4.最終用了這種方法

obj * p = null;

memcpy(result,&p)

然後在解析的時候,我發現了乙個奇怪的現象

memcpy(&t,result,sizeof(int));

這樣,t能得到正確的值

cout<<(*((tt*)result)).s《但是這樣,卻得不到正確的值

也就是說內建型別可以強轉指標,而類型別卻不可以。期待高手的回答

附上測試**:

#include

#include

#include

#include

using namespace std;

class tt

;int main()

一次關於sklearn crfsuite的安裝之旅

為了在windows上跑crf,我需要安裝sklearn crfsuite,最開始想到的是使用pycharm進行環境配置,裝上了sklearn crfsuite。跑起來,額,出錯了 正在訓練評估crf模型.traceback most recent call last file c users cc...

一次關於 的使用

今天遇到了乙個問題,值得一記 首先在我看專案 時發現了乙個問題 有乙個js的export如下 大家可以注意一下config 這裡為什麼要如此寫法呢?首先這裡用的時es6的箭頭函式 而此種寫法 等同於 其實這裡我們可以直接使用config 就 可以,為什麼還要多以一舉,用函式來返回呢,原因是假如我們用...

一次dp的小總結

dp也學了很久了 是該放乙個小總結的時候了 其實dp很早就講了 只是當時講的很快 所以我也是迷迷糊糊的 一看到dp就發怵 現在又講一遍才好一些 dp其實跟貪心類似 只不過dp中不同的狀態都是相互影響的 有兩個性質 最優化原理和無後效性 照著書上打的.其實學了這麼久 我覺得我也算是才剛剛入門 只能敲敲...