今日学习札记——C++程序设计1(11-02)

来源:互联网 发布:linux清除tomcat缓存 编辑:程序博客网 时间:2024/05/23 15:47
今日学习札记--C++程序设计1


1. 图1

2. C和C++
- 超集
- C++支持C所支持的全部编程技巧
- 任何C程序都能被C++用基本相同的方法编写,并具有相同的开销(时间、空间)

3. 参考资料
《C++程序设计》 钱能 清华大学出版社     《C++ Primer》
《Effective C++》                       《Programming -- Principles and Practice Using C++》
《More Effective C++》                  《The C++ Program Language》
《Thinking in C++》


=======================结构化程序设计部分========================
4. 基本数据类型
- char、int、float、double
- Modifiers(修饰符):long、short、signed、unsigned
# char 只能用signed、unsigned修饰
# float 不能被修饰
# double 只能用long修饰
# int 可用4种组合修饰
- 操作符sizeof,简单来说就是返回一个对象或类型所占的内存字节数。<下钻1:sizeof>
- ANSI C++:wchar_t <下钻2:wchar_t>、 bool 
- typedef 为已有的类型定义一个同义词
如:typedef double profit;
   typedef int INT;
5. 表达式
- 种类:算术、关系和逻辑、赋值、逗号、字位运算符
- 操作符可重载
- 赋值表达式:左值 = 右值表达式。左值:可以出现在表达式左部的表达式,具有存放数据的空间。
- 增量和减量操作符
# 前增量(前减量)   ++a(--a)  前增量的结果是左值
# 后增量(后减量)   a++(a--) 
- 三目运算符(可嵌套)  <exp1>?<exp2>:<exp3>
- 逗号表达式
如:int a,b,c;
   int d = (a=1, b=a+2, c=b+3);
- 字位运算符
# 按位取反~ 单目
# 按位与& 双目 复位(双1才1)
# 按位或| 双目 置位(有就是)
# 异或^ 双目
1) 与全0运算 不变
2) 与全1运算 取反
3) 与本身运算 清零
4) 与统一对象运算两次 还原
6. 语句
- 表达式语句
- IO语句
# cin、cout
# >>、<<
- 控制流语句

--------------<下钻1:sizeof>
操作符sizeof,简单来说就是返回一个对象或类型所占的内存字节数。
其返回值是size_t,一般定义为:typedef unsigned int size_t;(头文件stddef.h中)


sizeof有三种语法:
1)sizeof(object);    //sizeof(对象)
2)sizeof(type_name); //sizeof(类型)
3)sizeof object;     //sizeof 对象
例1: int i;
sizeof i;
sizeof(i);
sizeof(int);

sizeof(2);  //2为int型,所以等价于sizeof(int)
sizeof(2+3.14); //3.14为duoble型,所以等价于sizeof(double)

例2:指针记录了另一个对象的地址。既然是来存放地址的,那么它当然等于计算机内部地址总线的宽度。
所以在32位计算机中,一个指针变量的返回值必然是4(注意结果以字节为单位)。可以预计,在64位
系统中控制变量的sizeof结果为8。
     char *pc = "abc";
sizeof(pc);
 
例3:数组的sizeof等于数组所占用的字节数。
char a1[] = "abc";
int a2[3];
sizeof(a1);    //结果为4,字符串类型还存在一个NULL终止符
sizeof(a2);    //结果为3*4=12
 
例4:类的sizeof等于类中成员变量所占用的内存字节数。但是静态变量不算,因为在程序编译期间,就已经
为static变量在静态存储区域分配了内存空间。
A object;
sizeof(object);
--------------end<下钻1:sizeof>  
 
--------------<下钻2:wchar_t>
wchar_t被定义为:typedef unsigned short wchar_t;(头文件tchar.h中),显然它是16位(2字节)的。
(测试环境:VC++6.0)char类型wchar_t类型类型大小(32位系统)8位16位常量字符表示法'A'L'A' 或 'A'常量字符串表示法“hello”L“hello”一些使用方法char c='A'; (c的值:0x41)wchar_t wc='A'; (wc的值:0x0041)char* p=“hello”;wchar_t* pw=L"hello";sizeofsizeof("hello")=6sizeof(L"hello")=12计算长度strlen("hello")=5wcslen(L"hello“)=5


--------------end<下钻2:wchar_t>
1 0