gpt4 book ai didi

c - 是否可以在没有特定数据类型的情况下在 C 中创建指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:36 25 4
gpt4 key购买 nike

所以我开始了一个编程项目,我发现如果我可以创建一个指针而不将其声明为 char*int* 和依此类推,只需在其他地方指定尺寸即可。我四处搜索但找不到任何有用的东西。

现在我的想法是将所有内容都设为char*,如果不是字符串,则将它们与位移和/或操作结合起来。如果这对 C 来说太低了,什么语言可以让我这样做,我宁愿不使用汇编,因为它不够跨平台。

编辑:所以我忘记提到它应该在运行时分配内存,并且为了不浪费太多内存我想根据大小分配内存。例如,我想为 char 大小的值分配 1 个字节,为 int 大小的值分配 2 个字节,依此类推。大小是在文件中预定义的,但在读取文件之前是未知的,应该在运行时而不是编译时读取。

最佳答案

C 中有一个通用指针类型正是出于这个原因:void *

您可以将任何数据指针类型隐式转换为 void *:

char foo[] = "bar";
void *ptr = foo;

// ...

char *str = ptr;

但请注意,您仍然需要知道正确的类型。通过错误类型的指针访问对象将是未定义的行为


void * 不能做两件事:

  • 您不能对其进行指针运算(这包括索引)。 void 是一个不完整的类型,因此它的大小未知。一些编译器通过假定 char 的大小允许对 void * 进行算术运算,但这是一个扩展并且不可移植

  • 您不能取消引用 void *void 是“无”,因此没有任何意义。

关于c - 是否可以在没有特定数据类型的情况下在 C 中创建指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com