C语言开发中的常见错误详解
目录
- 一、编译型错误
- 1.解释
- 2.解决办法
- 3.代码示例
- 二、链接型错误
- 1.解释
- 2.解决办法
- 3.代码示例
- 三、运行时错误
- 1.解释
- 2.解决办法
- 3.代码示例
一、编译型错误
1.解释
编译型错误一般指语法错误,直接看错误信息或者是凭借着经验就可以搞定,相对来说较简单。
2.解决办法
双击错误提示信息,编译器就会自动定位发生错误的位置,按照正确的语法改正即可。
3.代码示例
正确代码:
#include<stdio.h> int main() { int a = 10; int b = 20; int c = a + b; printf("%d\n", c); return 0; }
二、链接型错误
1.解释
LNK 即 link ,是链接的意思,发生的是链接错误。
注意:发生链接错误时双击错误提示信息并不能定位错误发生位置。
发生链接错误一般是因为符号不存在,或者是符号写错了。
2.解决办法
根据错误提示信息寻找错误的符号,找到以后在更改
3.代码示例
正确代码:
#include<stdio.h> int get_max(int a, int b) { return a > b ? a : b; } int main() { int a = 10; int b = 20; printf("%d\n", get_max(a, b)); return 0; }
三、运行时错误
1.解释
代码可以跑过去,也就是说代码的语法没有问题。例如:我要求的是最大值,但是得到的结果却是最小值。
2.解决办法
借助于调试,逐步的定位问题,这是最难搞的错误
3.代码示例
正确代码:
#include<stdio.h> int get_max(int a, int b) { return a > b ? a : b; } int main() { int a = 10; int b = 20; printf("%d\n", get_max(a, b)); return 0; }
到此这篇关于C语言开发中的常见错误详解的文章就介绍到这了,更多相关C语言常见错误内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
深入理解C语言中编译相关的常见错误
1. /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':(.text+0x18): undefined reference to `main'collect2: ld 返回 1Reason: no main function in source file2. to get compile options -I and -lpkg-config libe.g: pkg-confi
-
基础C语言编程时易犯错误有哪些
C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下"灵活的余地",但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,通过对C的学习,积累了一些C编程时常犯的错误,以供参考. 1.书写标识符时,忽略了大小写字母的区别. main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息.C认为大写
-
c语言详解动态内存分配及常见错误的解决
目录 为什么会有动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的错误 对NULL指针的解引用操作 越界访问 对非动态内存进行free 使用free释放动态开辟内存的一部分 对同一块动态内存多次释放 对动态内存内存忘记释放(内存泄漏) 为什么会有动态内存分配 内存使用方式有两种 1.创建一个变量 2.创建一个数组 int a = 1; int arr[10]; 但是这两种方式都有一些特点 1.空间是固定大小的,不会变 2.必须提前知道要开辟多少空间,必
-
基于C语言中段错误的问题详解
当我在linux下写c语言的时候经常会遇到段错误.所以就来细究一下. 段错误或段违规(segmentation violation)查看Expert C Programming(Peter Van Der Linden) Pg.156解释到段错误是由于内存管理单元(MMU)的异常所致,而该异常则通常是由于解除引用一个未初始化或非法的指针引起. 就是指针正在引用一个并不位于你的地址空间中的地址.书中的例子 复制代码 代码如下: int *p = 0; *p = 17; 这里显然 地址0 并不是你
-
C语言初学者代码中的常见错误与问题
问题开灯问题 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推.一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号.k≤n≤1000 复制代码 代码如下: #include <stdio.h> #include <math.h> int main() { int a[1001],n,k,i,j; printf(&quo
-
C语言中返回错误信息的相关函数用法总结
C语言strerror()函数:返回错误原因的描述字符串 头文件: #include <string.h> 定义函数: char * strerror(int errnum); 函数说明:strerror()用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回. 返回值:返回描述错误原因的字符串指针. 范例: /* 显示错误代码0 至9 的错误原因描述 */ #include <string.h> main() { int i; for(i =
-
C语言编程时常犯十八个错误小结
看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考. 1.书写标识符时,忽略了大小写字母的区别. 复制代码 代码如下: main(){ int a=5; printf("%d",A);} 编译程序把a和A认为是两个不同的变量名,而显示出错信息.C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量名用大写,变量名用小写表示,以增加可读性. 2.忽略了变量的类型,进行了不合法的运算. 复制代码 代码如下: main(){ float
-
C语言编程中常见的五种错误及对应解决方案
目录 1. 未初始化的变量 2. 数组越界 3. 字符串溢出 4. 重复释放内存 5. 使用无效的文件指针 前言: C 语言有时名声不太好,因为它不像近期的编程语言(比如 Rust)那样具有内存安全性.但是通过额外的代码,一些最常见和严重的 C 语言错误是可以避免的. 即使是最好的程序员也无法完全避免错误.这些错误可能会引入安全漏洞.导致程序崩溃或产生意外操作,具体影响要取决于程序的运行逻辑. 下文讲解了可能影响应用程序的五个错误以及避免它们的方法: 1. 未初始化的变量 程序启动时,系统会为其
-
C语言开发中的常见错误详解
目录 一.编译型错误 1.解释 2.解决办法 3.代码示例 二.链接型错误 1.解释 2.解决办法 3.代码示例 三.运行时错误 1.解释 2.解决办法 3.代码示例 一.编译型错误 1.解释 编译型错误一般指语法错误,直接看错误信息或者是凭借着经验就可以搞定,相对来说较简单. 2.解决办法 双击错误提示信息,编译器就会自动定位发生错误的位置,按照正确的语法改正即可. 3.代码示例 正确代码: #include<stdio.h> int main() { int a = 10; int b =
-
Go语言开发中redis的使用详解
前段时间因为忙一些其它的事情,分享的有些少,最近学习一下redis在Go语言开发中的应用. 一.理论知识 Redis是一个开源的.使用C语言编写的.支持网络交互的.可基于内存也可持久化的Key-Value数据库. Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s . 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作. 原子 – Redis的所有操
-
Go语言开发保证并发安全实例详解
目录 什么是并发安全? Mutex 悲观锁 乐观锁 版本号机制 CAS 互斥锁 读写互斥锁 什么是并发安全? 在高并发场景下,进程.线程(协程)可能会发生资源竞争,导致数据脏读.脏写.死锁等问题,为了避免此类问题的发生,就有了并发安全. 这里举一个简单的例子: var data int go func() { data++ }() if data == 0 { fmt.Printf("the value is %v.\n", data) } 在这段代码中 第2行go关键字开启了一个新的
-
java开发中嵌套类的详解及实例
java开发中嵌套类的详解 在java语言规范里面,嵌套类(Nested Classes)定义是: A nested class is any class whose declaration occurs within the body of another class or interface. A top level class is a class that is not a nested class. 说的简单一点,就是定义在类里面的类.一般把定义内部类的外围类成为包装类(enclos
-
GO语言开发环境搭建过程图文详解
一.GO语言开发包 1.什么是GO语言开发包 go 语言开发包其实是对go语言的一种实现,包括相应版本的语法, 编译, 运行, 垃圾回收等, 里面包含着开发 go 语言所需的标准库, 运行时以及其他的一些必要资源 2.GO语言开发包下载地址 Go官方下载地址 : https://golang.org/dl/ Go官方镜像站(上面打不开可使用这个) : https://golang.google.cn/dl/ Go语言中文网下载地址 : https://studygolang.com/dl gop
-
Android开发中amera2 Preview使用详解
目录 前言 一.Camera2 Preview需要用到哪些模块 二.各个模块的功能和之间的关系 2.1 SurfaceTexture之SurfaceTextureListener 2.1.1 首先看关于SurfaceTexture的说明 2.1.2 SurfaceTextureListener的使用 2.2 CameraManager 2.2.1 CameraManager的作用 2.2.2 使用CameraManager打开Camera 2.3 CameraDevice之StateCallba
-
原生微信小程序开发中 redux 的使用详解
前提 复杂场景中有不少数据需要在多个不同页面间来回使用和修改.但是小程序页面直接的数据通信方式十分的简单.通常情况需要自己维护一个全局的对象来存放共有数据.但是,简单的维护一个共有数据实体,会随着业务逻辑的不断复杂化而变的过分庞大,并且数据的修改往往无法很好的溯源.加之公共数据实体中数据的修改和页面的UI之间没有太好的同步手段,往往需要在页面和对应的数据实体中同时都维护一份相同的数据,操作十分的不方便. 之前使用过Taro以react+redux的结构来开发微信小程序,依托redux整体上可以解
-
Android开发中的单例模式应用详解
本文实例讲述了Android开发中的单例模式应用.分享给大家供大家参考,具体如下: 单例模式是应用最广的设计模式之一,在应用这种模式的时候,单例对象的类必须保证只有一个实例存在.许多时候,整个系统只需要拥有一个全局对象,这样有利于协调系统的整体行为.如一个应用中,应该只有ImageLoader实例,这个ImageLoader实例中又包含网络请求.缓存系统.线程池等,很耗资源,因此没有理由让他构造多个实例.这种不能自由构造对象的情况就是使用单例模式的场景.在Android系统中存在很多这种场景,比
-
在Kotlin开发中如何使用集合详解
关于 Kotlin 开发 使用 Kotlin 开发 Android App 在 Java 工程师群体中变得越来越流行.如果你由于某些原因错过了 Kotlin,我们强烈建议你看一下这篇文章. 对于那些处在技术前沿和喜欢 Kotlin 的开发者来说,本篇文章和他们息息相关.所以,下面就让我们来看一下怎样在 Kotlin 中使用集合吧. Kotlin中的集合是基于 Java 集合的框架.本篇文章主要讲的是 kotlin.collections 包中的几个特性. 数据处理 Kotlin 中有一个拓展函数
-
iOS开发中UIPopoverController的使用详解
一.简单介绍 1.什么是UIPopoverController 是iPad开发中常见的一种控制器(在iPhone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面 2.使用步骤 要想显示一个UIPopoverController,需要经过下列步骤 (1)设置内容控制器 由于UIPopoverController直接继承自NSObject,不具备可视化的能力.因此UIPopover
随机推荐
- 浅谈C++ Explicit Constructors(显式构造函数)
- flex4.5中CSS选择器的应用小结
- cnct.batch 批处理不错的东西%cd%
- JS+PHP实现用户输入数字后显示最大的值及所在位置
- ASP.NET数据绑定之DataList控件
- 一步一步学习PHP(8) php 数组
- 发一个ASP的ADODB类代码
- Android添加水印的正确方法 只要三步!
- SQL Server 2008的逻辑查询处理步骤
- jquery 页面滚动到指定DIV实现代码
- js滚轮事件兼容性问题需要注意哪些
- C#中使用IFormattable实现自定义格式化字符串输出示例
- CentOS7挂载新数据盘的完整步骤
- Python Django 命名空间模式的实现
- Mysql实现null值排在最前/最后的方法示例
- 一次记住JavaScript的6个正则表达式方法
- python实现年会抽奖程序
- numpy数组做图片拼接的实现(concatenate、vstack、hstack)
- 解决flask接口返回的内容中文乱码的问题
- springboot实现多文件上传功能