Thinking in C++ 阅读笔记(第三章)
来源:互联网 发布:淘宝免费课程视频 编辑:程序博客网 时间:2024/04/30 08:25
C++中的C
<创建函数>
函数原型:
eg. int func(in,float,long Z); //long Z will be warned !
int func( ) //无参数而不是任意参数
float func (...)//可变参数列表,避免(?)
返回值:
1、每个函数都有返回值,空返回值为void
2、return的结果视返回值而定:
考虑:
int func(){
return 1;
}
//----------------------------------
char func(){
return 1;
}
3、void不能使用return
int func(){
return 1;
}
//----------------------------------
char func(){
return 1;
}
3、void不能使用return
函数库:
使用方法:包含头文件
<执行控制语句>: 我最先接触的部分:)
//...略...//
注意:
1、可以随时定义变量;
2、goto:
goto跳出多重循环,可读性高;
当然把循环写成函数再return也行,每层循环加条件也行;
递归:等写算法笔记时再写
<运算符简介>:
运算符优先级:查表吧!
自增自减:
1、效率
++i //无临时变量
i++ //临时变量
2、运算顺序
consider:
i=1;
y=i++ //y=1,i=2
or y=++i //y=2,i=2
请参考:http://community.csdn.net/Expert/topic/3688/3688400.xml?temp=.260235
数据类型:内部类型、抽象类型(自定义的类)
基本内部类型:只规定存储临界值,二进制及其转换为数位;6e-4
bool:隐式转换??
说明符:specifier
long / short 值上下限 float 4 double 8 long double 10
修饰int可以不写int: long a 就是 long int a
signed / unsigned 是否使用符号位
由此可见,long short不可以修饰char,因为char只有一位,而signed unsigned不可以修饰浮点类型因为浮点类型总含有一个符号。
指针:终于到你了! :)
* 和谁更亲密?
定义一个变量ptr来存储地址,怎么做到?
int* ptr=&a
我们实际上想要得是ptr=&a,但是没有一个基本内部类型可以读取&a这样的数据,所以插入一个*来表示指针,那么*和谁结合更密切呢?
考虑两种说法:
1、int* ptr //与类型更密切
2、int *ptr//与变量更密切
但是他们都有自己的难处:
1、int a,b,c可行,按照这种逻辑int* a,b,c也是可行的,但实际上我们不得不写成
int* a;
int* b;
int * c;
2、 int *ptr=&a 这又好像在说 *ptr=&a,而这并不是我们所要的
Eckel给我们了一个新答案:*是插入的,和前后没有亲疏关系,只是一个标志告诉编译器:“ 等一等,它是一个指针。”
用途:修改外部对象;一些编程技巧
修改外部对象:
为什么可以修改?我们可以先看看定义并初始化一个变量时发生的事情,这样有助于理解值传 递和地址传递 。要记住三个名词:名称(访问标识),值,内存地址。值储存在内存地址中,而名称只是访问该地址从而获得值的访问标识,可以认为值和内存地址结合更紧密,是一一对应的,而访问标识则可以有多个,我们看个例子:
e.g : int a=23; //第一个标识a 以及唯一值23
假设&a=4198736 //唯一地址,已经转换为long型
int* ptr=&a; //第二个标识*ptr
为什么第二个标识不是ptr呢?因为ptr的值是内存地址,把ptr做*运算就可以得到访问内
存4198736的第二个标识了,它相当于第一个标识a。所以从功能上讲,
*ptr与a一样 //两个访问标识
ptr与&a一样 //这里复杂一些,ptr实际上是一个新的名称,它对应另一个的值
//、内存地址。看完下面程序就明白了:
void main(){
int a;
int*ptrA=&a;
cout<<(long)ptrA<<endl;
cout<<(long)&ptrA<<endl;
}
引用简介
“(引用)基本思想和前面所述的指针的使用是一样的:我们可以用引用传递参数地址。引用和指针的不同之处在于,带引用的函数调用比带指针的函数调用在语法构成上更清晰(在某种情况下,使用引用实质上的确只是语法上否成的不同)”说白了
int&a=b;
就是为建立了别名a,而&则表示“等一等,它是一个引用”,还是用名称,值,地址关系来看,我们可以这样看:
int b=1;
int&a=b;
名称:b,a 值:1 地址:&a或&b(&a=&b,这是b是a的别名的最好证据)
用引用在语法上更清晰,更符合人的思维。
更多细节,请参看:
http://dev.csdn.net/develop/article/62/62577.shtm C++ FAQ阅读笔记[2]--引用
选择自 oury 的 Blog
http://dev.csdn.net/develop/article/57/57367.shtm C++基本功:从一个左右值问题出发,侃侃C++的引用
选择自 shooow 的 Blog
int func(){
return 1;
}
//----------------------------------
char func(){
return 1;
}
3、void不能使用return
- Thinking in C++ 阅读笔记(第三章)
- thinking in java 阅读笔记 第三章 程序控制流程
- #Thinking in Java阅读笔记# 第三章 操作符
- Thinking in C++ 阅读笔记(第一章)
- Thinking in Java阅读笔记(一)
- Thinking in Java阅读笔记(二)
- Thinking In Java笔记(第三章 操作符)
- Thinking in Java 笔记(第三章 控制程序流程)
- thinking in java 第三章笔记
- thinking in java 阅读笔记 第二章 一切都是对象
- thinking in java 阅读笔记 第四章 初始化和清除
- thinking in java 阅读笔记 第五章 隐藏实施过程
- thinking in java 阅读笔记 第六章 类再生
- thinking in java 阅读笔记 第七章 多形性
- #Thinking in Java阅读笔记# 第二章 一切都是对象
- #Thinking in Java阅读笔记# 第四章 控制执行流程
- #Thinking in Java阅读笔记# 第五章 初始化与清理
- #Thinking in Java阅读笔记# 第七章 复用类
- Stored Procedure(存储过程)编写经验和优化措施
- 1111111
- how to remote connect to isa server 2000?
- VOA特别英语节目官方词汇表汇总
- 海量数据存储过程
- Thinking in C++ 阅读笔记(第三章)
- asp.net和javascript怎样结合
- SqlDataReader 类
- 一个用来保存参数的容器类
- Jdeveloper 与 CVS集成开发
- 两条关于生成排名的SQL语句
- Java程序员的存储过程
- 结合MSHTML与WebBrowser生成美观实用的WinForm应用程序(By Lostinet)
- 探讨界面工作人员与后台程序编写人员的合作