明天要下雪啦,表达式笔记

编程入门 行业动态 更新时间:2024-10-10 07:21:49

明天要下雪啦,<a href=https://www.elefans.com/category/jswz/34/1771310.html style=表达式笔记"/>

明天要下雪啦,表达式笔记

  • 一个数组不能用另一个数组初始化或者定义,e.g.: int arr1[10]; int arr2[10]=arr1;这是错误的,但是有一个例外:char carr[10]="happy";为了兼容c语言,c风格字符串(即字符数组)可以直接赋值给char型的数组。
  • 逗号表达式。逗号表达式有很多用途,比如在for循环中:for(int i(0),j(1);i<100;++i,++j),也可以用在while循环或者if条件语句中,逗号表达式返回最后一条语句的值。逗号表示式在定义多个对象的时候,在逗号后面不能有其他限定词(除了*或*const),但是可以赋值,e.g.:int * a=0,b=1,* const c=1;上面的例子是正确的。
  • 定义const 对象时候,一定要初始化,因为编译的时候必须已经确定对象的值。char * ch=new char[10];cin>>ch;这是标准流输入c风格字符串的方法。
  • 前自增与后自增的区别。前自增返回的是对象本身,后自增返回的是自增之前的字面值。e.g.:int a(1);(++a)=2;这是正确的,a的值变为2,(a++)=2;这样是错误的,后自增返回的是字面值,无法赋值。另外后自增比前自增具有更高的优先级别,可以这样用:int * ptr=new int[10]();int b= *ptr++;b此时指向数组的第一个元素。
  • 释放动态创建对象的内存时,要把所有指向它的指针重新赋值为0,这样可以避免潜在风险。
  • int与unsigned int 做比较的时候,int会转化为范围更大的unsigned int,e.g.:int a(-1);unsigned int b(1);bool falg=(a>b);这时候flag是true,结果可能出人意料。
  • 对数组的理解。当定义一个数组,如 int arr[10],在使用的时候arr经常被隐式的转换为指向第一个元素的指针,并且在使用arr[n]这样的下标操作时,arr也是一个指针,但是不要误解arr就是一个指针。arr代表的仍然是一个数组,sizeof(arr)的结果仍然是数组的占用内存40字节,而不是指针的4字节。&arr的时候获得的仍然是一个int (*)[10]而不是指向int*。
  • 用关键字new创建数组的初始化问题。在new创建数组的时候,一般情况下只能调用默认构造函数初始化数组成员,如:int * iptr=new int[10]();创建的数组元素全被初始化为0。但是我们也可以动态创建另一个数组的副本,e.g.:char carr[10]="happyday";char (* ptr)[10]=new char[10]{&carr};此时数组指针ptr指向新创建的数组,并且新创建的数组初始化为数组carr的副本,这里的关键是用大括号{}调用初始化而不是(),*(*ptr+1)将获得数组中的第二个字符a。
  • 关键字enum。关键字enum可以创建一种类型,如:enum A{fall_love_number=3,remaind_girlfriend=2};这样定义之后我们可以不用声明A的对象,只用里面声明的关键字,如:int a=fall_love_number;int b(remaind_girlfriend);或者声明一个A的对象:A a=fall_love_number;a可以用关键字来赋值了。透过现象看本质,A中相当于使用了#define fall_love_number 3 #define remaind_girlfriend 2 。

更多推荐

明天要下雪啦,表达式笔记

本文发布于:2024-03-06 16:19:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715778.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表达式   明天   笔记

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!