本文根据笔者个人工作/学习经验整理而成,如有错误请留言。
文章为付费内容,已加入原创保护,禁止私自转载,违者必究。
文章发布于:《C语言编译报错&警告合集》
例子:
#include <stdio.h>
int main() {
int num = 10;
int *ptr = num; // 这里将整型变量num赋值给指针变量ptr
printf("%!d(MISSING)", *ptr);
return 0;
}
报错:
原因:
想要给自定义的指针变量分配指定的内存空间,将整形直接赋给指针了;
分析:
将整型变量num赋值给指针变量ptr时,没有进行强制类型转换。虽然在编译的时候编译器可能会帮助强转不过也有可能不同编译器操作不同导致地址出错。
应该将语句修改为:
int *ptr = (int *)num;
Note:
指针的常用分配内存函数用法就有强制转换,在实际运用中可能就容易忽略这一要点;
int *p = (int *)malloc(sizeof(int)); //malloc函数返回值是void *