C语言,不懂是什么意思!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:52:21
若要用下面的程序片段使指针变量p指向一个存储型变量的动态存储单元;
int *p;
p = ____ malloc(sizeof(int));
则应填入 。
A、int B、int * C、(*int) D、(int *)
答案是:D。看不懂是什么意思啊!!求高手解释一下(int *)是什么意思。为什么要这么写,其他为什么不行!!!先谢了。。。

呵呵,int *就是建立了一个指针,该指针指向的内容是int型的数据。 因为p是int型的数据,不管其他的光是要给p 赋值就必须赋值为指针,而该指针必须是指向Int类型的数据。d就对了哈。
a是int型,与指针类型不同,不能赋值。
b是指取malloc(sizeof(int))的地址的内容,*在这里是运算符,再加个int就是杂糅了。
c就完全是乱写了
d是指将malloc(sizeof(int))强制转换为int指针类型

这个就是C语言强制类型转换语法:

a = (type)b;

--------------------------------------------
malloc()函数返回值是void *类型的
p是int *类型的

所以必须进行类型转换

p = (int *)malloc(...);

int a=48;
char c=(char)a;

这就是个公式
记住就行了

这个就是公式 就是得要有括号括起来的 呵呵