今日刷题之越界问题和返回值问题

前言

一、以下代码有什么问题

(1)问题解答

二、main函数为什么返回1?

(2)问题解答

总结


前言

编程语言学起来就像是一片大海,太多的知识点需要知道、理解、学习,今天分享两个小知识。


一、以下代码有什么问题

int main()
{
   char szstr[10];
   strcpy(szstr, "0123456789");

}

(1)问题解答

1)首先的问题就是越界,数组szstr只有10个空间,而数字字符0~9也是10个空间,还有一点要注意的是\0占了一个空间,这样数组的空间就不够了。

2)高级编译器不让使用strcpy,认为它是不安全的,;例如VS等等,而按照提示更改时就会发现编译器建议用strcpy_s,其中有三个参数,第二个就是拷贝的数目,那么这样就能有效避免越界问题,如果所填数字多过了数组的容量也不会编译通过。

二、main函数为什么返回1?

int main()
{
int x=3;
printf("%d",x);
return 1;

}

(1)问题解答

在C标准中,认为0表示成功,非0是失败,这里返回的值会给我们一个提示信息,看看代码是否是正常退出。所以在主函数中,我们习惯写return 0,来表示代码正常退出,显示其他的都是不正常退出,代码存在问题。  


总结

以上就是今天想和大家分享的,虽然是比较小的点,但是不积跬步,无以至千里,加油吧!

猜你喜欢

转载自blog.csdn.net/weixin_62456756/article/details/128336066