2017-11-18 132 views
0

我从函数获取指向块(开始时为空)的数据的指针。C:将整数添加到字符指针(地址)

这个指针是:

char* data; 

而我的工作就是在此块中插入不同类型的数据。我只知道数据类型(字符串/整数/浮点数)及其以字节为单位的长度。

例如,对于一个插入整数,我想给每个块像一种形式:

|block_num|age|weight|favorite_number| 

所以我的主要问题是,我怎么可以插入数块,并让他们喜欢?我希望像数据[3]一样每次都能减轻体重。

我试图使用memset和memcpy,但没有成功。

谢谢你的时间!

+0

你想在'char *'指向的地址中存储'int'吗? – coderredoc

+0

如果我理解正确,你希望你的函数返回可能是不同类型的东西(string/int/float/etc ..)。使用基本指针'char *',然后投射被认为不是类型安全的。我建议你定义抽象基类,它将保存'数据'并为这个类定义几个纯虚拟方法。您的函数应该返回将以多态方式使用的基类指针。 – PazO

+0

@PazO .:你在说“C”吗? – coderredoc

回答

-1

如果您想写入char*指向的地址,则需要将其转换为正确的类型(您需要)并将其解除引用。

例如:(这里的returnedFromFunc类似于您的data)。

char *returnedFromFunc = func(); 

您可以通过它适当地铸造int*

*((int*)(returnedFromFunc))=intValue; 

int要转到你会简单地做到这一点,下一个位置: -

char *originalPtrValue = returnedfromFunc; // store it for future referece 
returnedfromFunc += sizeof intVar; 

同样,你可以访问它同样如果你知道你正在存储的数据的类型。

例如,如果它是int

你可以做到这一点

printf("%d ", *((int*)(returnedFromFunc))); 

使用sizeof操作,您可以访问不同的位置。(从最初的char*值offseting)。

您需要知道您可以在哪里写入多少内存。否则有可能尝试写入你没有权限的内存(超出范围)