1、用malloc函数申请空间:
例如:
int len = 100;
用int p = (int )malloc(len * sizeof(int))
或者:
int p = malloc(len sizeof(int))
请问int 必须加吗? 不加也可以运行程序的, 而且有时候连warnning 都没有啊, 那个Int是什么意思?
返回的不就是地址吗, 而P也是指针啊, 为什么我见好多地方都有强制类型转换的做法的
原型:
void *malloc(size_t size)
返回值是:已分配内存的首地址
2、那个void 和void*有哪位同学可以指点一下, 我觉得void本来就不需要返回类型, 那要那个void * 干嘛呀?
答:
C下,建议 int p = malloc(len sizeof(int))
C++下,建议 int p = (int )malloc(len * sizeof(int))
因为C++下有更严格的类型检查
C标准并不要求强制转换,在赋值时会将void *隐式转换成相应类型的指针。
对malloc的返回类型强制转换时传统C的习惯用法,因为传统C中malloc返回char *,隐式转换会产生警告
但为了保持C++兼容,还是需要返回类型强制转换的
答:
这个问题c与c++是不同的,c允许void*指针与普通指针互相赋值,但c++不允许void*指针赋予普通指针,必须经过强制转换才可以。
因此c中你可以直接int *p = malloc….,在语法上是没有问题的。但从一个良好的风格出发,使用强制转换可以利于代码日后向c++移植,否则,要进行不那么让人愉快的修改。