C++/C的一些基本知识


C++操作符 :
操作符(operator)用于操作数据。操作符进行计算、检查等式、进行赋值、操作变量和进行其它更奇怪的工作。C++中有许多操作符,这里不想列出全部,只列出最常用的操作符,如下表所示。表1.2常用C++操作符操作符说明举例 
算术运算符 
+ 加 x=y+z; 
- 减 x=y-z; 
* 乘 x=y*z; 
/ 除 x=y/z; 
赋值运算符 
= 赋值 x=10; 
+= 赋值与和 x+=10;(等于x=x+10;) 
-= 赋值与减 x-=10; 
*= 赋值与乘 x*=10; 
/= 赋值与除 x/=10; 
&= 赋值位与 x&=0x02; 
|= 赋值位或 x|=0x02; 
逻辑操作符 
&& 逻辑与 if(x && 0xFF) {...} 
|| 逻辑或 if(x || 0xFF) {...} 
等式操作符 
== 等于 if(x == 10) {...} 
!= 不等于 if(x != 10) {...} 
< 小于 if(x < 10) {...} 
> 大于 if(x > 10) {...} 
<= 小于或等于 if(x <= 10) {...} 
>= 大于或等于 if(x >= 10) {...} 
一元操作符 
* 间接操作符 int x=*y; 
& 地址操作符 int* x=&y; 
~ 位非 x &=~0x02; 
! 逻辑非 if(!valid) {...} 
++ 递增操作符 x++(等于x=x+1;) 
-- 递减操作符 x--; 
类和结构操作符 
:: 范围解析 MyClass :: SomeFunction(); 
-> 间接成员 MyClass-> SomeFunction(); 
· 直接成员 MyClass . SomeFunction(); 
优先级由高到低:非(!),算数运算符,关系运算符,&&和||,赋值运算符。


const原则:

      使用const来修饰它前面的那个类型。Int *const b,指的是一个恒定的指针b,这个指针指向一个整型,所以这个指针的内容可以改变,但是它的指针值也就是b的值不能变,相应的int const *b,指的是一个指向恒定整型内容的指针b,也就是说这个b的内容可以变,但是开始的b所指向的地址中的内容不能在程序当中通过b来改变。


函数规则 :
      1.   函数可以取任意多个参数或不取参数。 
      2.   函数可以返回一个值,但函数不强求返回一个值。 
      3.   如果函数返回void类型,则不能返回数值。 
      4.   如果要让返回void类型的函数返回数值,则会发生编译错误。返回void类型的函数不需包含return语句,但也可以包含这个语句。如果没有return语句,则函数到达末尾的结束大括号时自动返回。 
      5.   如果函数原型表示函数返回数值,则函数体中应包含返回数值的return语句,如果函数不返回数值,则会发生编译错误。 
      6.   函数可以取任意多个参数,但只能返回一个数值。 
      7.   变量可以按数值、指针或引用传递给函数

数组规则 :
     1·   数组是以0为基数。数组中的第一个元素为0,第二个元素为1,第三个元素为2,等等。 
     2.   数组长度应为编译常量。编译器在编译时必须知道为数组分配多少内存空间。不能用变量指定数组长度。所以下列代码不合法,会导致编译错误: 
                             int x = 10;int myArray[x]; // compiler error here· 
小心不要重载数组末尾。 
     3.   大数组从堆叠(heap)而不是堆栈(stack)中分配(详见稍后)。· 从堆叠分配的数组可以用变量指定数组长度。例如:int x = 10;int* myArray = new int[x]; // this is OK 
      C++一个强大的特性是能直接访问内存,注意不要重载数组末尾。下列代码是合法的,但会导致程序或Windows崩溃:int array[5];array[5]=10;这是常见的错误,因为数组是以0为基数的,最大脚标应是4而不是5。如果重载数组末尾,则无法知道哪个内存被改写了,使结果难以预料,甚至会导致程序或Windows崩溃。C++不支持字串变量(放置文本的变量),C++程序中的字串是用char数据类型的数组表示的。


头文件的作用:
      1.  通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。 

      2.  头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

空行规则:
      空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。所以不要舍不得用空行。 

     l.    在每个类声明之后、每个函数定义结束之后都要加空行。
     2.   在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。

代码行规则  :
      l.    一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。 
     2.   if 、 for 、 while 、 do 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 {} 。这样可以防止书写失误。

代码行内的空格规则 : 
     l.    关键字之后要留空格。象 const 、 virtual 、 inline 、 case 等关键字之后至少要留一个空格,否则无法辨析关键字。象 if 、 for 、 while 等关键字之后应留一个空格再跟左括号‘(',以突出关键字。 

     2.   函数名之后不要留空格,紧跟左括号‘(',以与关键字区别。 

     3.   ‘('向后紧跟,‘)'、‘,'、‘ ; '向前紧跟,紧跟处不留空格。 

     4.   ‘,'之后要留空格,如 Function(x, y, z) 。如果‘ ; '不是一行的结束符号,其后要留空格,如 for (initialization; condition; update) 。 

    5 .  赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“ = ”、“ += ” “ >= ”、“ <= ”、“ + ”、“ * ”、“ % ”、“ && ”、“ || ”、“ << ” , “ ^ ”等二元操作符的前后应当加空格。 

     6.   一元操作符如“ ! ”、“ ~ ”、“ ++ ”、“ -- ”、“ & ”(地址运算符)等前后不加空格。 

     7.   象“ []”、“ .”、“->” 这类操作符前后不加空格。 

     8 .  对于表达式比较长的 for 语句和 if 语句,为了紧凑起见可以适当地去掉一些空格,


对齐规则 :
      l .   程序的分界符‘ { '和‘ } '应独占一行并且位于同一列,同时与引用它们的语句左对齐。 

     2 .  { } 之内的代码块在‘ { '右边数格处左对齐。

长行拆分规则 :
      l  . 代码行最大长度宜控制在 70 至 80 个字符以内。代码行不要过长,否则眼睛看不过来,也不便于打印。 

     2 . 长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。

 C的9种控制语句:

     1.  if()~else~      (条件语句) 

     2.  for()~              (循环语句)

     3.  while()~          (循环语句)

     4.  do~while()~   (循环语句)

     5.  continue          (结束本次循环语句)

     6.  break              (中止执行switch或循环语句)

     7.  switch             (多分枝选择语句)

     8.  goto                (转向语句)

     9.  return              (从函数返回语句)

 

      希望某些常量只在类中有效,由于#define定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用const修饰数据成员来实现。const数据成员的确是存在的,但其含义却不是我们所期望的。const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。const数据成员的初始化只能在类构造函数的初始化表中进行,这时,应当用类中的枚举常量建立在整个类中都恒定的常量,枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是:它的隐含数据类型是整数,其最大值有限,且不能表示浮点数(如PI=3.14159)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值