小编use*_*231的帖子

Malloc在malloc之前没有类型转换

我正在学习malloc功能,我读到了这个:

ptr= malloc(sizeof(int)*N)
Run Code Online (Sandbox Code Playgroud)

其中N是您要创建的整数.唯一的问题是ptr指出了什么?编译器需要知道指针指向什么,以便它可以正确地执行指针算法.换句话说,如果编译器知道ptr是指向int的指针,那么编译器只能将ptr ++或ptr = ptr + 1解释为继续执行下一个int的指令.只要您将ptr定义为指向要使用的变量类型的指针,这就可以工作.不幸的是,这引发了一个问题,即malloc如何知道指针变量的类型是什么 - 不幸的是它没有.

要解决此问题,您可以使用TYPE强制转换.这种C语言是一种强制某种特定类型的机制.您所要做的就是在值前面的括号中写入TYPE说明符.所以:

ptr = (*int) malloc(sizeof(int)*N)
Run Code Online (Sandbox Code Playgroud)

但是我在malloc之前看过很多他们没有使用过(*int)的地方,甚至我用这个做了一个链表并且没有错误.这是为什么?另外,为什么指针除了要指向的内存大小之外还需要知道什么呢?但话又说回来,我对此很陌生,所以现在只有malloc的怀疑.

c malloc

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

如果x = 10 y = 10 z = 5 x <y <z = true

我有这个问题,并在回答中说,由于从左到右的关联性,结果将为1,这对于该陈述是正确的。这是代码。

#include<stdio.h>

int main ()
{
int i=0,x=10,y=10,z=5;
i=x<y<z;
printf("\n\n%d",i);

return 0;
} 
Run Code Online (Sandbox Code Playgroud)

但是x在这里大于z,这怎么发生?

c compare

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

标签 统计

c ×2

compare ×1

malloc ×1