C语言错误和心得

本文探讨了C语言编程中的常见错误与最佳实践,包括函数调用顺序的重要性、局部变量初始化、字符串处理方法及注意事项等。同时介绍了如何正确获取字符串长度、避免编译错误以及递归函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误:

1.printf("%d和%d的最大公约数和最大公倍数:%d%d\n",m,n,getMax_divisor(m, n),getMin_multiple(m, n));

   //这段代码存在对2个函数调用顺序的不确定(不知道谁先谁后),一旦后调用的函数需要用到先调用函数中的值,编译就不断报错,尽量不要这样写(即使在高级编译器下)。

2.局部变量是必须初始化的(老忘,可能是java的影响吧)。

3.printf("%d", sizeof(str) / sizeof(char));//这样并不能获得字符串的长度

4.用vs编写C的时候,用scanf函数总会出现警告,原因是vs对该函数做了改进(因为scanf无法确定输入的个数,是否超出使用数组或字符串的个数要求),解决方法:

   ①用sacnf_s(编译器推荐的);

   ②#include <stdio.h>

      #pragma warning(disable:4996)

 

心得:

1.输入一个字符串的方法(注意添加相应的头文件):

   ①gets(arr);//缺点:不知道输入的字符串长度,可以用strlen(arr)测一下吧。

   ②可以用while(arr[i]!='\0'),然后用putchar(arr[i])或者printf("%c",arr[i]);//缺点:还要定义一个i,优点:执行最后一次i++的i就是字符串的长度。

   ③直接scanf("%s",arr);//和①很类似,唯一的区别就是不能输入空格(很不爽)

2.void statistics(char str[])//形参数组可以不指定大小,传进来多大就多大。

3.C语言中函数返回字符串的四种方法:

   自己看到的写的不错的博文,可以学习,链接为:http://www.cnblogs.com/qingergege/p/6496683.htm

4.C语言中可以返回局部变量么?

   有找到一篇写的不错的博文,只看第一段就明白了,链接为:http://blog.youkuaiyun.com/kai8wei/article/details/44699493 

5.void convert(int n)//经典递归
{
int i;
if ((i = n / 10) != 0)
convert(i);
putchar(n % 10 + '0');
}

//举例当n的实参为93时,i=9不等于0,执行convert(9);接下来n=9;i=9/10等于0,输出'9',程序回到convert(9)的下一步,输出'3'。

6.同一优先级的运算符,运算次序由结合方向决定,有从左到右,也有从右到左的。

7.不要将&a[0]简单地理解为a[i]元素的物理地址,因为并不存在a[i]这样一个实际的数据存储单元。它只是一种地址的计算方法,能得到第i行的首地址。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值