相关疑难解决方法(0)

sizeof(int)保证等于sizeof(void*)

数据类型"int"的大小是否始终等于c语言中指针的大小?

我只是好奇.

c sizeof

4
推荐指数
1
解决办法
2888
查看次数

释放一个指针

我想知道free()指针是否可以转换为另一种类型.例如,如果我这样做:

char *p = malloc (sizeof (int));
int *q = (int *)p;
free (q);
Run Code Online (Sandbox Code Playgroud)

我没有收到关于gcc(-Wall)的警告.

在linux上,free上的手册页说,在malloc(),calloc()或realloc()没有返回的指针上调用free是违法的.但是如果指针被转换为中间的另一种类型会发生什么?

我问这个是因为我读到C标准不要求不同的指针类型(例如int*和char*)具有相同的大小,我不明白这是如何可能的,因为它们都需要可转换为void*为了调用malloc/free函数.

以上代码是否合法?

c

4
推荐指数
1
解决办法
2718
查看次数

sizeof char**指针是否依赖于机器的体系结构?

当我执行以下代码时:

int main()
{
    char **temp;
    printf("Size of **temp %d", sizeof(**temp));
    printf("Size of *temp %d", sizeof(*temp));
    printf("Size of temp %d", sizeof(temp));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

Size of **temp 1
Size of *temp 8
Size of temp 8
Run Code Online (Sandbox Code Playgroud)

我不明白的是char指针的大小是8多少?机器独立吗?

c pointers sizeof

2
推荐指数
2
解决办法
1646
查看次数

当在C中减去两个指针时

我正在玩指针以完全获得概念,然后想要减去两个指针,期望这两个地址之间的距离或东西,但显然我错了,所以这是我的代码.

int x = 5, y = 7;
int *p = &y;
int *q = &x;
printf("p is %d\nq is %d\np - q is %d", p, q, (p - q));
Run Code Online (Sandbox Code Playgroud)

为什么程序输出p - q is 1?谢谢.

c pointers

1
推荐指数
2
解决办法
5929
查看次数

C中的联合大小

union的size等于其中最大成员的大小.但在下面的联合中,大小显示为8字节.int和float的大小是4字节.为什么它显示8个字节?

union data {
    int i;
    float f;
    char *str;
};
Run Code Online (Sandbox Code Playgroud)

c unions

-4
推荐指数
2
解决办法
1265
查看次数

标签 统计

c ×5

pointers ×2

sizeof ×2

unions ×1