注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

又一个部落格

换过很多备忘录,不知道这本怎么样!

 
 
 

日志

 
 

更多操作符  

2010-02-23 11:42:28|  分类: c++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
const
定义
const int max_users = 9;
const 定义的常量 在生存期内是不能修改的
const的另一个重要用途是防止通过指针修改的对象
下面这个例子就是防止k变量被函数 f 修改
#include <iostream>
using namespace std;

int f(const int *i);

int main(){
    int k =1;
    f(&k);
    cout<<f(&k);
}

int f(const int *i){
    return -*i; // 假如在函数内试图修改 *i 的值 ,会报错
}

同样的 引用参数也一样

extern修饰符
在一个很大的程序当用,只做了部分修改就要重新编译时非常浪费时间的.
extern关键字在这里就可以起到作用了

全局变量在程序中只能被定义一次,如果修改了全局变量,那就必须把整个程序重新编译一次
    好的办法是,把左右的全局变量定义在一个文件当中,其他文件当中 用 extern修饰符在申明一次,这样就不会报错
    用extern关键字申明的变量,不会实际的创建一个变量
申明(declaration)和定义(definition)的区别
    申明,只是指定名称和类型
    定义,指定名称和类型,还有分配内存

extern的另外一个作用就是,明确指定函数的 linker(不知道怎么翻译好)
extern “language” function-prototype
extern "C" void myCfunc();//函数使用 c语言的linker

所有的c++编译器都支持 c 和 c++ linkage
一次指定多个函数的 linker
extern “language” { prototypes
 ...
}

static修饰符
static定义的变量只被初始化一次
在一个函数内部定义的静态变量,函数返回后不会消失
局部静态变量和全局变量的区别在于, 静态变量只能在这个局部的范围内被调用
#include <iostream>
using namespace std;

int f();


int main(){
    cout<< f()<<endl; // 1
    //cout<< i;       // 如果这里使用i ,出错
    cout<< f()<<endl; // 2
}

int f(){
    static int i = 0;
    return ++i;
}

全局静态变量
全局静态变量和全局变量的区别在于,全局静态变量只有在定义它的文件中才能调用

register Variables
登记册修饰符告诉编译器来存储变量以这样的方式:使这个变量尽可能快的被访问.
通常是在cpu或者告诉缓存中
通常这样的变量时用在循环中


Enumerations 枚举
enum type-name { value-list } variable-list;
variable-list是可选的
enum transport { car, truck, airplane, train, boat } t1, t2;
定义了一个枚举类型时候,接下来可以直接用 type-name来再定义一个该类型的变量
transport how;
或者下面的
enum transport how;
这里要了解的一点是 枚举型的每一个元素的代表的整数
除非另外初始化,默认,第一个是0,第二个是1
cout << car << ' ' << train; //打印出来时  1 3
枚举类型是自动转化为整数,但是整数不能自动转化成枚举类型,下面的语句是错误的
how = 1; // Error
how = (transport) 1;//正确
枚举类型的初始化,后面的值比前面的多1
enum transport { car=10, truck, airplane = 10, train, boat };
分别值是         10      11     10             11     12


typedef 关键字
typedef的作用是重新定义类型的名称,并不会创建一个新的类型
typedef type name;

typedef float balance;
balance over_due;

位运算符(Bitwise Operators)
& AND,与
| OR,或
^ XOR,异或
~ NOT,非

The Shift Operators(位移操作符)
<<, >>

?操作符
Exp1 ? Exp2 : Exp3;

逗号操作符,The Comma Operator
一般用在循环,多个初始化或增量声明
还有一个用处就是,假如多个表达式用逗号分开,那么这些表达式最终的值是最右边的表达式,看下面的例子
var = (count=19, incr=10, count+1);
第一步, count被赋值19, 第二步, incr被赋值10, 第三部 var = count+1就是20
上面的()是必须的,因为 = 的优先级比 , 要高

多重赋值Multiple Assignments
count = incr = index = 10;

复合赋值Compound Assignment
x = x+10;效果等同于 x += 10;
x = x-10;效果等同于 x -= 10;

sizeof操作符
sizeof (type) 或者 sizeof var-name
sizeof (int)
sizeof aaa

附加操作符的优先级列表
Highest
    ( ) [ ] -> :: .
    ! ~ ++ -- - * & sizeof new delete typeid type-casts
    .* ->*
    * / %
    + -
    << >>
    < <= > >=
    == !=
    &
    ^
    |
    &&
    ||
    ?:
    = += -= *= /= %= >>= <<= &= ^= |=
Lowest
    ,

  评论这张
 
阅读(73)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017