C++学习宝典(笔记)(2)

2019-07-13 16:41

***********************2010年09月03日 星期五 08时22分15秒 (第三天)*********************************** 开始C++!!!!!!!! c++程序运行过程 g++ -c hello.cpp g++ hello.o a.out

g++ hello.cpp o -newname newname

也可以在命令行

g++ hello.cpp; a.out(写在一行) 步骤

编辑器---vi gedit

编译器---g++(其实g++也做了连接) 连接器(linker)----ld 执行----a.out 运行execute

也可以只让g++ 编译 g++ hello.cpp -c 得到目标文件hello.o,然后再做连接g++ hello.o;也可g++ hello.o -o hello;

//预处理:ifndef或include

表预处理输入输出流:#include 域名空间using namespace std; main函数是程序的入口;

cout:输出流(可以自已识别数据类型 ) cin:输入流 endl:换行;

转义字符:\\t (等于tab)

\\r(回退到行首前面输出内容无) \\b(回退一个字符)

把另一个文件插入(任意位置):#include\就会执行另一个文件的内容)(注意没有;里面的内容也是c++语句 )

函数

1970/1/1/0:0::0到现在的秒数:time(NULL)----------------#include 字符串的实际长度(不包括\\0):strlen(\字符串\;结果是6---------#include 比较字符串的大小是比ASCII码,返回正数负数和零:strcmp(\

可以直接输出函数cout<

字符的ASCII码从0~127(计算计用8bit表示一个字符,即一个字节) 'A'~'Z' 65~90 'a'~'z' 97~122 '0'~'9' 48~57

ASCII是0:0 ,false,'\\0',NULL 类型

short短整形(-32768~32767)---------------2个字节 int 整数----------------------------------4个字节 unsigned int 表非负整数(0~)----------------4个字节

long长整型--------------------------------4个字节(后缀 L l)

char字符(-128~127)---------------------1个字节 unsigned char(0~255)-------------------- 1个字节 string字符串------------------------------4个字节

float单精度小数----------------------------4个字节 (后缀 f) double 双精度小数--------------------------8个字节 (后缀d) long double长双度小数----------------------12个字节 (后缀ld) bool布尔 (布尔值true false)----------------1个字节

注意sizeof(string) 结果4

sizeof(\结果是10,因为有一个'\\0' 相当于strlen()+1

float/double类型如小数位数取决于前面整数部分的大小

负数是用补码表示:-128表示(补码:正数到反再加1)(最高位符号位一定是1) 128->10000000 取反->01111111 再加1->10000000

-1表示

1->00000001 取反>11111110 再加1->11111111

c++中不能直接写二进制表示一个数;(十进制,八进制 0开头,十六进制0x开头)

变量名(见名知义):字母下划线开头,字线数了下划线组成,如学号StudentNumber 关键字:编辑时会变颜色

变量的类型及作用范围

局部变量:在函数内部和复合语句中定义的变量,作用范围只在函数各复合语句中,形参也是局部变量

全局变量:在函数外部定义的变量,作用范围,定义处到本源文件结束

局部变量与全局变量发生命名冲突,在局部变旦的作用范围,局部变量起作用;

定义命名空间

namespace 命名空间名{ 定义变量并初始化; 定义函数; }

使用命名空间中的变量

命名空间名::变量名-----表命名空间中的变量(同名可必免发生命名冲突) 命名空间名::函数名()-----表命名空间中的函数 ::变量名----表全局的变量

使用哪个命名空间要事先声明:using namespace 命名空间名;(std是c++标准命名空间) 也可以using 命名空间名::变量名; 先声明 using 命名空间名::f();

常量:

定义常量:const double pi;

const string myname=\常量的值称字面量

符号常量:#define PI 3.14159 (即以标识符形式出现的常量)(是预处理命令)

算术运算:

+ - * /:有一个数是float型,则结果是double(因为C++对于float型都按double类型处理)

%:两侧均应是整数

/:有一个是负数,则结果是负数

算术运算自动类型提升:

bool char shortint --->int(运算必转,即使是两个shortint运算,结果也是int) float ----->double (必转 )

int--->unsigned---->long--->double(两个运算数不同类时转 ) 上面是自动类型转换;还有强制类型转换()

运算符

算术:+ - * / % ++ -- (结合性:后++(自左向右);前++(自右向左))

关系:> < == >= <= != 逻辑:&& || !

位运算:<< >> & | ^ ~

赋值:= += -= *= /= %= >>= <<= &= ^= != 条件:? : 逗号 : , 指针 :*

引用 和地址符:& 求字节符:sizeof() 强制类型转换:(类型) 成员:.

指向成员:-> 下标:[] 其它:()

动态分配空间运算符:new 释放空间运算符:delete 抛出异常运算符:throw

(注意:逗号运算符结果是最后一个表达式的值,但多个,结合性自左向右)

优先级 ()[] -> . 单目 算术 关系

逻辑(不包括!) 条件 赋值 逗号

结合性

自右向左:单目运算符(后++例外自左向右) 三目运算符?: 赋值运算符 抛出异常throw

例:int i=123; 输出~i+1 结果是-123(负数等于正数按位取反再加1) 或 int i=123; 输出0-i 结果是-123 (负数等于0-正数) 输出 ~1 结果是0

cout<

cout<

记住:非0就是真

!80 输出假0 !0.464674 输出0

记住:输出表达式用括号

cout<<3>5<5)<

sizeof(类型) 输出类型所占有的了节数

sizeof(变量/表达式) 分析结果的类型,输出占有多少字节

********************************************************************************************** 指针知识点一

pointer_1=&a;pointer_2=&b;

若不想改变a,b值,只想改变输出顺序,可用指针改变指向 可int *p;

p=pointer_1;pointer_1=pointer_2;pointer_1=p;//完成交换指向,即些时pointer_1=&b,pointer_2=&a, 而a,b值并没有改变。

指针知识点二:

pointer_1=&a;pointer_2=&b; 实参(pointer_1,pointer_2) 形参(int *p1,int *p2)

实参到形参之间的传递是单向的值传递,如写成 void swap(int x,int y);xy改变后a,b的值并不会改变

而用指针作为形参与实参,传的是地址,让形参和实参指向同一个地址,形参可直接操作实参所指向地址中的数据。

如操作*p1,*p2,用到中间变量应定义int temp,而不是int *temp;因为temp所指的单元不可预见,如*temp=*p1这样就有可 破坏系统中的数据。

总结:实参变量和形参变量之间的数据传递是单向的“值传递”方式,指针变量作为函数的参数也是单向的值传递,就是形参如改变的是

形参所指向的地址,不会传给实参,即实参的指向没有变;如果形参改变的是形参所指向变量的值,则主函数中变量的值会改变。

??经典考试题:为什么使用指针做为函数参数

答:因为函数调只可以得到一个返回值,而使用指针变量做为函数参数,可以通过形参指针变量改变主调函数中变量的值,相当于通过 函数调用从被调用的函数中得到多个值。

指向数组元素的指针


C++学习宝典(笔记)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:美学概论试题及答案1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: