首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c语言常见错误和盲区

b=a++ 可以拆分成 b=a a=a+1 而来到c时候 a值已经加1了 即c=11 b=++a 可以拆分成 a=a+1 b=a 即b=11 这里是先加加 在使用...c=a a值已经在上面加1了 即c=11 二、static使用 1.修饰局部变量 结果不难看出是 2 2 2 2 2 a属于局部变量在栈区 函数使用后就会被销毁 所以每次调用 a...时 a值都会被重置成为1 a=a+1 最终每次输出都是2 ---- 现在函数中a被static修饰 成为了静态区中 所以这次调用a值不会随着函数调用结束而销毁 第一次a结果为 2 依次增加...就变成了内部连接属性 只能在本身源文件中使用了 4.总结 具有外部链接属性一个程序中其他源文件都可以使用(没有被static修饰过全局变量 函数 ) 而具有内部链接属性只能在本身源文件中使用...(static修饰过全局变量 函数)

73820

C语言常见6种错误

1、忽略大小写字母区别 编译代码时把x和X认为是两个不同变量名,而显示出错信息。C语言认为大写字母和小写字母是两个不同字符。习惯上,符号常量名用大写,变量名用小写表示。...2、将字符常量与字符串常量混淆 char a; a=”c”; 例子中混淆了字符常量与字符串常量,字符常量是由一对单引号括起来单个字符,字符串常量是一对双引号括起来字符序列。...3、忘记加分号 分号是C语句中不可缺少一部分,语句末尾必须有分号。 x=1 y=2 编译时,编译程序在“x=1”后面没发现分号,就把下一行“y=2”也作为上一行语句一部分,这就会出现语法错误。...改错时,有时在被指出有错一行中未发现错误,就需要看一下上一行是否漏掉了分号。 4、scanf函数输入时忘记加地址运算符“&” int a,b; scanf(“%d%d”,a,b); 这是不合法。...这种错误尤其需要注意。 6.switch语句中漏写break语句 例如:根据考试成绩等级打印出百分制数段。

1.2K3129
您找到你想要的搜索结果了吗?
是的
没有找到

C语言编程常见错误集锦 【下】

由于漏写了break语句,case只起标识作用,而不起判断作用。当grade值为A时,程序会从上到下执行完,五个printf都输出。 正确写法应为: ?...可分解为:b=i;i=i+1; 【第二个区别】 i++ 不能作为左值,而++i 可以 左值是对应内存中有确定存储地址对象表达式值,而右值是所有不是左值表达式值。 ?...5、忽略sizeof()和strlen()区别 ? 6、定义数组时,将定义“元素个数”误认为是可使用最大下标 ? C语言中,定义时用a[5],表示a数组中有5个元素。...其下标是从0开始,数组中最后一个元素是a[4],不存在a[5]。 7、定义数组时误用变量 ? 数组名后用方括号括起来是常量表达式,可以包括常量和符号常量。即C不允许对数组大小作动态定义。...8、地址运算符&使用错误 ? C中,数组名代表地址 正确应为: ? 9、同时定义了形参和函数中局部变量 ? 形参应在函数体外定义,而局部变量应在函数体内定义。 正确应为: ? ? —END—

1.6K10

c语言编程常见错误集锦 【上】

C语言区分大小写。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 ? 2.忽略变量类型,进行不合法运算 %是求余运算,得到a/b整余数。...C语言规定以“\0”作为字符串结束标志,它是系统自动加上,所以字符常量“b”其实包含两个字符'b' '\0',而把它赋给一个字符变量是不行。 ?...4.忽略了“=”和“==”区别 C语言中,“=”是赋值运算符,“==”是关系运算符。在此代码中,前者是进行比较,后者是进行赋值。 ?...5.忘记加分号 几乎在所有编程语言中,都是用“;”代表一句或多句语句结束。 ? 6.多加分号 ? ? ? 7.忘加地址运算符“&” scanf函数作用是:按照a在内存中地址将a值存进去。...9.输入字符格式与要求不一致 在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。 ? 如输入:a b c 字符“a”赋值给c1,字符“ ”赋值给c2,“b”赋值给c3。

1.3K10

C语言指针一些常见错误用法

比如JAVA,java是没有指针,但是很多地方都用到指针,不过不对用户开放,语言自身机制帮用户处理指针分配释放,为就是方便用户使用,减少错误。...不过我们不能因噎废食,指针虽难,但学好了会大大提升你编程能力。 下面来列举一下在学习过程中指针常见错误。 1.指针和指针变量 很多初学者没搞明白这两者区别,以至于很多时候把两者等同了。...在C语言中指针是一个概念性东西,简单而言就是地址。而指针变量是变量类型,属于int,float这类,是用来存放指针,也就是地址。但是很多时候我们说指针时是代指指针变量,这点我们要知道。...字符串个数     {       p[i]=(char*)malloc(sizeof(char)*len));//len 字符个数     }   错误原因:这是很网上多人写法,也是很常见一种错误...5.释放空间 C语言中用free来释放空间,一般用法是:    free(p);//这里释放是p指向空间,存放p内存空间没有被释放。

1.1K30

C语言常见错误,95%初学者都会遇到

但是这种人…万中无一” ——包租婆 对于C语言来说,不少初学者都会遇到各种各种问题,这里小编介绍几个比价常见问题。 一、 错误例子 ? 一、main写成mian(正确应该是:main) ?...错误提示: ? 二、比较中写成:0<a<1(正确应该是:0<a&&a<10) ? 错误提示: ? 三、在for循环后面加了“;”(正确应该去掉“;”) ? 错误提示: ? 二、 总结与思考 ?...读者应该会很容易看懂这几道常见错误,大多数初学者在初期刚刚敲代码时候,不经意间就可能打错代码,这个时候,首先需要看是下面的提示,尽量自己去看,看不懂先百度,只有自己完完全全深入理解了,下次就不会遇到这样问题了...我们常说“学而不思则罔”,和学习编程知识一样,我们只有在学习同时加以总结与思考,才能对编程有更系统和深入地了解,学到知识才真正能为自己所用。

7353429

C语言位运算详解:这些常见错误不能犯

刚学C语言那会儿,谁没遇到过一点小麻烦呢,经常吭哧吭哧写了半天,结果不能实现?why?返回去一个一个检查,眼睛都抽筋了,终于找出了元凶!!!...以后记住了,这些常见错误不能犯,再不用耗时耗力耗眼睛了 ~(^o^)/~   1、书写标识符时,忽略了大小写字母区别。 ...在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then … 但C语言中,“=”是赋值运算符,“==”是关系运算符。...由于习惯问题,初学者往往会犯这样错误。   5、忘记加分号。  分号是C语句中不可缺少一部分,语句末尾必须有分号。...scanf(“%s”,&str); C语言编译系统对数组名处理是:数组名代表该数组起始地址,且scanf函数中输入项是字符数组名,不必要再加地址符&。

1.2K00

新手最常见10个C语言错误,有人甚至全都中了!

C语言最大特点是:功能强、使用方便灵活。C编译程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活余地”。...但由于这个灵活给程序调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里错误。...看着有错程序,不知该如何改起,今天元元老师根据多年C语言学习积累了一些C编程时常犯错误,写给各位小伙伴以供参考。 0 书写标识符时,经常不区分字母大小写。...如: main() {  int A=5;  printf("%d",a); } 在C语言编译过程中,变量A和变量a是两个不同变量名,所以在运行时会提示出错信息。...因为在C语言中,“=”是赋值运算符,“==”是关系运算符。

1.1K20

常见C语言编程规范

头文件: 1.头文件中适合放置接口声明,不适合放置实现。 2.头文件应向稳定方向包含,产品依赖于平台,平台依赖于标准库。 3. .c/.h文件禁止包含用不到头文件。...4.每一个.c文件应有一个同名.h文件,用于声明需要对外公开接口。 5.禁止头文件循环依赖。 6.头文件应当自包含(任意一个头文件均可独立编译)。 7.禁止在extern"C"中包含头文件。...9.只能通过包含头文件方式使用其他.c提供接口,禁止在.c中通过extern方式使用外部函数接口、变量。...6.函数调用不要作为另一个函数参数使用,否则对于代码调试、阅读都不利。 7.函数break,return时一定要注意资源释放,比如释放申请内存、释放锁。 8.禁止内存操作越界。...(4)自动存储对象地址不应赋值给其他在第一个对象已经停止存在后仍然保持对象(具有更大作用域对象或者静态对象或者从一个函数返回对象)。

2.2K20

常见C编程段错误及对策

再有一点就是,参数出现错误并非本函数有问题,而是调用者传过来实参有问题。assert 宏可以帮助我们定位错误,而不是排除错误。...二、为指针分配内存太小 为指针分配了内存,但是内存大小不够,导致出现越界错误。...比如下面这种写法就没有结束标志符了: char a[7] = {‘a’,’b’,’c’,’d’,’e’,’f’,’g’}; 另外,不要因为char 类型大小为1 个byte 就省略sizof(char)...也就是说,在程序中malloc 使用次数一定要和free 相等,否则必有错误。这种错误主要发生在循环使用malloc 函数时,往往把malloc 和free 次数弄错了。...解决办法是重新设计程序,改善对象之间调用关系。 上面详细讨论了常见六种错误及解决对策,希望读者仔细研读,尽量使自己对每种错误发生原因及预防手段烂熟于胸。

1.4K41

C语言常见程序(三)

在这里将讲一些有趣程序,首先是用C语言生成一个九九乘法口诀表,并且要求其展现形式要有所不同。首先对九九乘法口诀表进行分析。从横行看有一个乘数都从左向右相加1,另一个乘数不变,从竖行看也是这样。...其中肯定会出现不可预知错误(bug),即输出形式与自己想像中不一样。...不妨自己在演草纸上一步一步写出代码执行过程,这样就能找到错误,或者在适当位置添加相应输出语句,将相应变量或相应代码语句是否执行情况输出到弹出框中。...需要注意是要在输出语句末尾添加换行符,否则很多输出信息都在一行中显示,很难分辨输出信息。这也是为何在做oj(程序设计题)中输入和输出要求都是正确,而提交结果是错误原因。...但是最好别不停重写代码。这样不仅还会出现新错误,而且还浪费时间,效果不是太好。要记住在修改错误过程中也是在提高自己学习计算机语言过程。

2.4K40

C语言进阶篇】动态内存分配六个常见错误

鸽芷咕:个人主页 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活理想,就是为了理想生活!...文章目录 前言 常见动态内存错误 1️⃣ 对NULL指针解引用操作 ⌨️ 错误原因 解决方法: 2️⃣ 对动态开辟空间越界访问 ⌨️ 错误原因 解决方法: 3️⃣ 对非动态开辟内存使用free...⛳️动态内存分配学完了那么,这些关于内存分配错误你就必须避免了! 本期文章收录在《C语言进阶篇》,大家有兴趣可以看看呐! ⛺️ 欢迎铁汁们 ✔️ 点赞 收藏 ⭐留言 !...注:上一章学习内容是《动态内存分配》 常见动态内存错误 1️⃣ 对NULL指针解引用操作 代码演示: void test() { int* p = (int*)malloc(INT_MAX /...对NULL指针解引用操作 对动态开辟空间越界访问 对非动态开辟内存使用free释放 使用free释放一块动态开辟内存一部分 对同一块动态内存多次释放 ☁️ 好了这些就是常见动态内存分配错误

19210

Go 语言 Slice 陷阱:如何避免常见错误

前言 Go 语言提供了很多方便数据类型,其中包括 slice。然而,由于 slice 特殊性质,在使用过程中易犯一些错误,如果不注意,可能导致程序出现意外行为。...本文将详细介绍 使用 slice 时易犯一些错误,帮助读者更好使用 Go slice,避免犯错误。...index out of range 错误,例如: func main() { s := make([]int, 0, 4) s[0] = 1 // panic: runtime error...这是因为通过 make([]int, 4) 和 make([]int, 0, 4) 初始化切片,底层所指向数组值是不一样: 第一种初始化方式,切片长度和容量都为 4,底层所指向数组长度也是...小结 本篇文章主要介绍了使用 Go slice 过程中可能会遇到陷阱以及如何避免这些错误,帮助读者更好地使用 Go slice。 关注我,一起学习 Go,一起进步!

29730

c语言 switch错误用法,C语言switch语句详细用法

C语言还为多分支选择提供了另一个switch语句,其一般形式为: 开关(表达式){ 案例常量表达式1: 语句1; 案例常量表达式2: 语句2; … 条件常量表达式n: 语句n; 默认值: 语句n...但是在输入3之后,将执行情况3及以后所有句子c语言 switch语句,并输出星期三及以后所有单词. 这当然是不希望. 为什么会这样?这仅反映了switch语句功能....这与之前介绍if语句完全不同,因此应特别注意. 为避免上述情况,C语言还提供了一个break语句,专用于跳出switch语句. break语句仅具有关键字break,没有参数. 稍后将详细介绍....修改示例程序,在每个case语句之后添加一个break语句c语言 switch语句,以便在每次执行后可以跳出switch语句,以避免输出意外结果....,否则会发生错误.

1.4K20

C语言编程—错误处理

C 语言不提供对错误处理直接支持,但是作为一种系统编程语言,它以返回值形式允许您访问底层数据。...在发生错误时,大多数 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是全局变量,表示在函数调用期间发生了错误。...您可以在 errno.h 头文件中找到各种各样错误代码。 所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当动作。...errno、perror() 和 strerror() C 语言提供了 perror() 和 strerror() 函数来显示与 errno 相关文本消息。...strerror() 函数,返回一个指针,指针指向当前 errno 值文本表示形式。 让我们来模拟一种错误情况,尝试打开一个不存在文件。

13130

c语言常见图形打印

前言 个人主页: :✨✨✨初阶牛✨✨✨ 推荐专栏: c语言初阶 个人信条: 知行合一 本篇简介:>:介绍c语言三角形与菱形打印分步介绍 效果展示图: 目录 前言 一、等腰三角形...1.1 紧凑型等腰三角形: 1.2 分散型等腰三角形 二、菱形 一、等腰三角形 1.1 紧凑型等腰三角形: 效果图: (1)打印元素: 通过观察,不难发现,每一行元素规律是2×i-1;(...i表示行数) 所以我们代码可以这样写: #include int main() { int i = 0, j = 0; int row = 0;//表示打印行数 printf...("请输入要打印三角形行数:"); scanf("%d", &row); for (i = 1; i <= row; i++)//外层循环决定打印行数 { for (j = 0; j <...通过观察,我们可以发现,空格数=需要打印行数-所在行,即 例如: 打印5行是,空格数分别为 第一行:4(空格数)=5(需要打印行数)-1(所在行) 第二行:5-2 第三行:5-3 第四行

1.8K50
领券