广州C/C++语言培训班
广州C/C++语言培训班
- 上课时段:见详情
- 教学点:2个
- 开班时间:随到随学
- 课程价格:请咨询
- 已关注:841
- 优惠价格:请咨询
- 咨询电话: 400-008-6280
广州C/C++语言培训相关资料:
C/C++:初学者常遇到的c语言陷阱
在初学者学习编程的过程中的会遇到一些经常会犯的错误,也许在我们成长起来之后会觉得这些错误实在太低级,但是在牛掰的大虾也是从菜鸟过来的,针对于初学者下边总结了一些我们会经常遇到的陷阱,希望对菜鸟们有帮助:
正题:
陷阱1:忽略大小写的区别
#include
void main()
{
int a=10;
a+=a;
printf("%dn",A);
}
这个很简单,是基础,c语言变量区分大小写。代码中的a与A不是同个变量,编译出现A没定义的错误。
陷阱2:“{}”与“()”使用不当造成错误
#include
void main()
{
int i,j;
int a[2][3]={(1,2,3),(4,5,6)};
printf("array a:n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%d",a[i][j]);
}
printf("n");
}
}
}
程序结果不能正常输出数组每个元素,编译{(1,2,3),(4,5,6)};时,先进行括号内的逗号运算(取逗号最后的数值),编译生成{3,6};其它元素为0。正确的写法:{{1,2,3},{4,5,6}};
陷阱3:在if,while,#include,#define,for后直接加分号,如for(int a=1;a<10;a++);
如果是while,程序一般执行死循环,int a=1;while(a);
如果是if,判断语句无效果,比如。if(a>0);a=-1;无论a是否大于0,结果都是a=-1;
如果是#include,程序编译的时候提示错误,无法引用库文件;
如果是#define,比如#define a 200;程序在预编译的时候,200;包括分号一同被替换进程序,程序不可能正常编译
如果是for循环,跟if一样,事与愿违,循环做无用功,本想循环的printf语句只执行一次。for(int a=1;a<10;a++);printf("%d",a);程序只输出一次a值。
陷阱4:使用循环语句不慎产生死循环
#include
void main()
{
unsigned int i;
for(i=10;i>=0;i--)
printf("%d",i);
printf("n");
}
i被定义为无符号整型变量,i的值永远大于等于0;i>=0永远成立;
陷阱5:do....while与while之间的区别
do....while先执行再判断条件是否成立;无论条件是否成立,do....while至少执行一次;
while 先判断,再执行;条件不成立,就不执行,可能执行0次;
陷阱6:数据溢出产生的错误
#include
void main()
{
int i,rst;
i=32767;//这里是turbo c中int类型为16位,c++为32位
rst=i+1;
printf("%d,%d",i,rst);
}
c语言中int占两个字节,数据最大支持补码正数值32767,加1溢出。
陷阱7:除号/用法导致的错误
如果除号的两边都为整数,结果为整数;两边有一个实数,结果为实数;
#include
void main()
{
double i;
i=9.5+1/2;
printf("%f",i);
}
结果输出9.500000;这里的1/2运算符两边为整数,1/2=0;正确的输出:i=9.5+1.0/2;
陷阱8:变量未定义
虽说是人人都清楚的问题,但是还是会出现。
陷阱9:用scanf输入数据时忘记加&符号
#include
void main()
{
int a,b;
printf("输入两个整数n");
scanf("%d%d",a,b);
printf("%d%dn",a,b);
}
scanf第二个参数必须为地址。正确的写法:scanf("%d%d",&a,&b);
陷阱10:使用scanf函数输入格式不符
#include
void main()
{
int a,b;
scanf("%d,%d",&a,&b);
printf("%d,%d",a,b);
}
凡是学c语言都遇到过这问题,错在输入a和b时,忘了在ab之间输入逗号。
不是任何的场合适合用其他符号用作数据输入分割。比如scanf(“%s,%d,%s”,&a,&b,&c);a得到的是整个语句的内容。
我提议用空格取代其他符号分隔数据,可以减少不必要的错误。
陷阱11:输入的数据类型不符的陷阱
比如在上代码程序输入字符'a','b'.输出不是想要的结果。改成scanf("%c%c",&a,&b),输入字符用%c。
陷阱12:switch语句中忘记使用break;
#include
void main()
{
char grade;
scanf("%c",&grade);
switch(grade)
{
case 'a':printf("90-100n");
case 'a':printf("80-100n");
}
switch中忘记用break;则每种情况都判断,满足条件都执行
}
陷阱13:指针没被初始化
指针是存放地址的变量,与其他变量相同的是,变量未被赋值时,变量存放着内存上原本的值(内存的释放与文件的删除相类似,内存上的数据不改动,除非其他数据覆盖上去),变量的赋值就是数据的覆盖,内存上保存了上次运行的数据。未被赋值的指针,不知指向哪里。
#include
#include
#include
using namespace std;
int main()
{
char*str;
strcpy(str,"good");
printf("%s",str);
retrun 0;
}
代码中的str指针未被赋值而使用,程序无法编译。
陷阱14:超出动态分配的内存
#include
#include
#include
using namespace std;
int main()
{
char*str=malloc(5);
strcpy(str,"goodluck");
printf("%s",str);
free(str);
retrun 0;
}
程序动态分配5字节的内存空间,但是赋值超过了5字符,错误为赋值的数据超过动态分配的空间。
陷阱15:使用内存后未释放
#include
#include
#include
using namespace std;
int main()
{
char*str=malloc(20);
strcpy(str,"goodluck");
printf("%s",str);
retrun 0;
}
有必要在这里说说动态内存怎么释放:
内存未释放在程序运行时,开始不出现错误,过多占用内存时会造成内存空间不足而死机的现象。
C++ 开发语言,主导编程世界的地位
C语言属于高级语言,具有可移植性,面向过程的,贴近底层、运行速度快
1、应用广泛
C++ 语言广泛的用于基础软件、桌面系统、网络通信、音频视频、游戏娱乐等诸多领域,是世界上使用最广泛的编程语言之一
80%大型网络游戏 由C++编程语言开发 | 大部分基础软件是由 C++编程语言开发 | 90%以上桌面系统 都是由C++语言编写 | C/C++ 技术在网络通信 方面应用巨大 |
2、稳居前列
据世界权威语言排行榜(TIOBE)的最新数据显示(2019 年 3 月),C和C++ 语言已分别名列排行榜的第二和第四的位置。 |
C++ 软件人才稀缺,职业发展前景广
C++软件工程师在企业需求中呈上升趋势,人才需求发展处于坚挺状态
可从事行业:算法实现 网络安全 物联网 图形 / 视频 / 多媒体处理 底层数据处理 区块链 负载均衡 反向代理 |
19年迭代,课程源自企业需求,紧跟时代
达内每一期课程大纲,由研发组结合热点技术与企业需求不断完善
课程内容: • 计算机概述 • 标准 C 基础语法 • 数据结构和算法 学习目标 计算机概述,Linux Eclipse 开发环境搭建 基本数据类型,流程控制,数组 俄罗斯方块 各种存储结构优劣对比,排序算法优劣对比 | ||||
课程内容 • Linux 文件系统 • Linux 内存管理 • Linux 进程管理 • Linux 线程管理 • 网络通讯开发 学习目标 掌握文件的打开与关闭、文件的读写、系统与标准I/O 掌握子进程创建、进程间通讯、信号捕获和处理 掌握线程创建、线程同步技术 | ||||
课程内容 • C++ 基础 • OOP • 异常和 IO 流 • QT 开源框架库 • C++ 模板 • STL 标准模板库 • MySQL 学习目标 熟悉名字空间、各种数据类型的操作 熟练掌握C++ 各种异常情况处理,输入输出流操作 掌握QT 开源框架库的使用 了解C++ 泛化数据类型技术原理和实现 掌握STL 十大容器使用 | ||||
课程内容 • Windows 编程基础 • Windows 窗口 • Windows 线程管理 • MFC 框架总揽 • 视图架构 • MFC 序列化 • MFC 网络通讯 • ADO 接口 学习目标 掌握窗口的注册、窗口的创建、消息机制、资源的使用 了解MFC 的概述、程序启动机制、窗口创建机制 掌握文件操作、永久保存机制 掌握ADO 接口访问数据库技术 | ||||
课程内容 • 网络安全概述 • 网络协议栈 • 密钥 • 内核加固 • 网络诱骗 • 防火墙 • 垃圾邮件过滤 • 恶意代码检测 • 嗅探器 学习目标 网络安全开发编码原理和切入点的剖析 对称秘钥、公钥秘钥的原理解析 针对木马攻击程序的反响渗透和注入技术 防火墙技术工作原理解析 各种抓包工具工作原理 |
多领域项目实战,助你职位发展先人一步
项目落地+重构,助你不仅能编程-更精编程
阶段项目一 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
HTTP服务器 WebServes Web服务器可以解析客户端发来HTTP协议,根据用户请求,给予响应数据(静态网页,图片或动态页面)。 | |
阶段项目二 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
网络爬虫 WebCrawler 搜索引擎的信息源自互联网,通过“网络爬虫”将整个“互联网”的海量信息获取到本地.(搜索引擎的入口) | |
阶段项目三 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
电信计费系统 DMS 电信部门针对电信用户登录信息进行采集,分析,传输,存储,以此作为对电信用户资费的依据。 | |
阶段项目四 | 根据当天知识点,搭建或重构项目,深谙不同编程方式的区别,选择合适的实现方式。 |
远程监控 Remote Control 取消远程机所有的输入控制功能,实现本地机监视并控制远程机的所有输入输出操作。 |
扫描二维码免费领取试听课程
登录51乐学网
注册51乐学网