C/C++入门易错点及经常使用小技巧

前言

C++语言诞生至今已有30多个年头了,主要集中在须要运行效率比较高的行业,好比如今的游戏开发以及高效服务器等等。正则表达式

C++学习难度比其它语言都要高,这是不能否认的,其学习难度主要在于它的复杂性,如何入门C++,想必不少人都头疼过。讲到入门,咱们首先是掌握基础语法,C++的语法是和C语言的语法很相近。数组

**【文章福利】:**小编推荐本身的C语言交流群:967051845!整理了一些我的以为比较好的学习书籍、视频资料共享在群文件里面,有须要的能够自行添加哦!~服务器

今天小编讲讲C/C++入门易错点及经常使用小技巧函数

**1. int型 :**绝对值在10^9范围内的整数均可以定义成int型。学习

**2. long long型 :**若是long long型赋值大于2^31 -1的初值,则须要在初值后面加上LL,不然会编译错误。指针

**3. float、double输入输出格式 :**使用printf("%f",c);语句时,%f是float和double型的输出格式。而在使用scanf输入时,float输入格式为%f,double输入格式为%lf。cdn

**4. if条件 :**因为if(n)表示if(n!=0),因此if(!n)表示if(n==0)视频

**5. for语句 :**注意在C语言中不容许在for(A;B;C)语句的表达式A里定义变量(好比inta=0;的写法是不容许的),但在C++中能够blog

**6. 数组定义 :**若是数组大小较大(10^6级别以上),则须要将其定义在主函数外面,不然会使程序异常退出。游戏

**7. 数组赋初值 :**若是咱们定义一个数组int array[10]={12,1,6,4}.可知只对数组的前四项赋值,那么后面没有赋值的元素默认为0.但若是该数组没有赋初值,数组中的每一个元素均可能会是一个随机数(不必定是0)。因此若是想给整个数组都赋值为0,简单介绍如下四种方法:

  • int array[10]={};
  • int array[10]={0};
  • memset函数 :memset(array,0,sizeof(array));//若数组为int array[10],则此处sizeof(array)=4*5=20,由于 memset是按字节赋值. 格式 memset(数组名,值,sizeof(数组名));
  • fill函数 :fill(array,array+5,8);//数组从array[0]到array[4]均被赋值为8,格式 fill(起始地址,结束地址,值);

**注意:**memset()函数需头文件或<string.h>. 且memset()只能为数组赋初值0和-1,由于memset()只能以字节为单位赋值fill()函数需头文件. 且fill()能够为数组或容器的某段区域赋某个任意相同的值.

8. 二维数组赋值 :若二维数组array[4][5]={{1,2,3,4,5},{2,2,3},{},{4,2,3,5}};能够看出第三行用{}跳过了(若是不加大括号是没法经过编译的)

**9. 字符数组初始化 :**字符数组能够经过直接赋值字符串来初始化(仅限初始化,程序其余位置不容许这样直接赋值整个字符串)

**10. 字符数组输入输出 :**定义char str[10]; scanf("%s",str); pritnf("%s",str); 注意字符数组在输入时不须要加&取地址运算符. 且scanf输入时%s经过空格或换行来识别一个字符串的结束 gets用来输入一行字符串.gets识别换行符\n做为输入结束,所以scanf完一个整数后若是要使用gets,须要先用getchar接收整数后的换行符;puts输出一行字符串后会紧跟一个换行(\n)

**11. 字符数组长度的重要性 :**字符数组的长度必定要比实际存储字符串的长度至少多1,做为结束符'\0'.注int型数组不须要. 且若是不是使用scanf函数的%s格式或gets函数输入字符串(例如getchar),必定要手动早输入的每一个字符串后加‘\0',不然printf和puts输出字符串将没法识别字符串末尾而输出一大堆乱码.

**12. sscanf与sprintf :**sscanf : int n; char str[10]="123"; sscanf(str,"%d",&n); //sscanf写法的做用是把字符数组str中的内容以"%d"的格式写到n中(从左往右). sscanf还支持正则表达式. sprintf : int n; char str[10]="123"; sprintf(str,"%d",n); //sprintf写法的做用是把n以"%d"的格式写到str字符数组中(从右往左)

**13. 引用& :**注意要把引用的&与取地址运算符&区分开. 引用并非取地址的意思,引用不产生副本,而是给原变量起了个别名 .因为引用是产生变量的别名,所以常量不可使用引用。因此:

其中不能够直接写成swap(&a,&b),而必须用指针变量p1和p2存放&a和&b,而后把指针变量做为参数传入.

14. 访问结构体内的元素 :

因而访问stu中变量的写法: stu.id stu,name stu.next

访问指针变量p中的元素的写法: (*p).id <=> p->id (*p).name <=> p->name (*p).next <=> p->next

15. 结构体的初始化

**注意:**若是本身从新定义了构造函数,则默认生成的构造函数就会被覆盖. 若是想不经初始化就定义结构体变量需手动加上.

文章福利

小编C工做也有五年了,推荐个**C语言/C++学习交流群:967051845!**里面整理了一些我的以为比较好的学习书籍、视频资料共享在群文件里面,有须要的能够自行添加哦!~

相关文章
相关标签/搜索