一段C语言程序,为什么会出现warning?在线等
发布网友
发布时间:2023-06-21 17:47
我来回答
共5个回答
热心网友
时间:2024-12-12 08:58
因为你的num指针声明后没有给他付初值,而声明后传num后,计算机不知道他的值是什么,所以给你了个warning。而数组在声明时系统便给它分配了固定的地址空间,相当于给它付了初值,所以没有问题。
有warning程序可以通过,但是存在隐藏的危险,像你上面的例子中,字符指针的使用之前未给它确定的值,若指针除了毛病,很容易造成内存溢出,从而导致程序崩溃。有时warning可能是因为语言使用不规范造成的。
热心网友
时间:2024-12-12 08:58
char *num;
这样 num 是一个未初始化的指针,要先用 new 关键字将其初始化。比如 num=new char[4]; 对于用new 分配的内存,要用delete 来释放,比如 delete num;
这个warning 不能通过,会有运行时错误,因为没有为指针分配内存,虽然编译通过了,但运行时就会使用一段没有分配的内存,程序会提示“XXX遇到问题需要关闭。”之类的话。
default: t=p[i]-'0';
这个因为p[i]是保存的一个数字字符的ASCII码,而'0'其实就是数字0的ASCII码,所以p[i]-'0'得到的正好是一个整数数字,因为1的ASCII码比0的大1,2的比0的大2,依此类推。
热心网友
时间:2024-12-12 08:59
你的main函数没有返回值 在printf("The converted rsult is %d \n",convert(num)); 后加return 0;
热心网友
时间:2024-12-12 08:59
在C中不影响,通过!
要是C++中就要是 void main(){}
热心网友
时间:2024-12-12 09:00
问题关键:需要搞清楚指针和数组的区别。
其他如magician547所说。