首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >char*的大小是多少?

char*的大小是多少?
EN

Stack Overflow用户
提问于 2021-07-14 07:45:34
回答 3查看 155关注 0票数 0

char*的大小是多少,或者我如何才能获得它的大小?它会不会简单地

代码语言:javascript
运行
复制
sizeof(char)

代码语言:javascript
运行
复制
sizeof(char[])

我之所以这样问,是因为我试图创建一个数据结构(队列),该结构将char*作为其数据类型,并且为了初始化/创建队列,我需要将数据类型的大小作为参数传入。如果它是一个整数:

代码语言:javascript
运行
复制
queue* q = createQueue(sizeof(int))

对于char*,我该如何做这样的事情呢?像这样的东西可以工作吗?还是我的想法错了?我是否需要使用char**,但我认为队列的实现将需要更改,因为我遵循的是我在GitHub上找到的通用队列实现。

EN

回答 3

Stack Overflow用户

发布于 2021-07-14 07:57:33

char*是一个指针,因此与任何其他指针(int*void*...)具有相同的大小。在64位CPU上,指针大小为8字节。

您可以简单地编写sizeof(char*)

https://onlinegdb.com/ySTtpNFSg

票数 2
EN

Stack Overflow用户

发布于 2021-07-14 08:09:34

正如在其他注释中提到的,char*是一个指针,因此它是一个引用实际char所在的内存位置的数字。我想补充的是,实际大小可能取决于前面提到的here计算机的体系结构。

有关类型大小的更多参考,请参阅of首选项网站的this link

票数 0
EN

Stack Overflow用户

发布于 2021-07-14 08:17:03

sizeof(char*)返回指针的大小。

如果你正在为x86编译,它实际上保证是4个字节。

如果你正在为x64编译,它实际上保证是8个字节。

是的,获取指针的大小是完全有效的。虽然动态分配单个指针有点奇怪,但分配一个数组指针是很常见的。例如,假设您想要泛化您的队列。你要做的第一件事就是让它成为一个指针队列。

代码语言:javascript
运行
复制
typedef struct {
   size_t capacity;
   size_t count;
   void **array;
   // ...
} Queue;

int Queue_init(Queue *q) {
   q->capacity = 10;
   q->array = malloc(sizeof(void*) * q->capacity);
   if (!q->array)
      return 0;

   q->count = 0;
   // ...

   return 1;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68370431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档