char*的大小是多少,或者我如何才能获得它的大小?它会不会简单地
sizeof(char)或
sizeof(char[])我之所以这样问,是因为我试图创建一个数据结构(队列),该结构将char*作为其数据类型,并且为了初始化/创建队列,我需要将数据类型的大小作为参数传入。如果它是一个整数:
queue* q = createQueue(sizeof(int))对于char*,我该如何做这样的事情呢?像这样的东西可以工作吗?还是我的想法错了?我是否需要使用char**,但我认为队列的实现将需要更改,因为我遵循的是我在GitHub上找到的通用队列实现。
发布于 2021-07-14 07:57:33
char*是一个指针,因此与任何其他指针(int*,void*...)具有相同的大小。在64位CPU上,指针大小为8字节。
您可以简单地编写sizeof(char*)
发布于 2021-07-14 08:09:34
发布于 2021-07-14 08:17:03
sizeof(char*)返回指针的大小。
如果你正在为x86编译,它实际上保证是4个字节。
如果你正在为x64编译,它实际上保证是8个字节。
是的,获取指针的大小是完全有效的。虽然动态分配单个指针有点奇怪,但分配一个数组指针是很常见的。例如,假设您想要泛化您的队列。你要做的第一件事就是让它成为一个指针队列。
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;
}https://stackoverflow.com/questions/68370431
复制相似问题