C++对C的加强 总结(3)
来源:互联网 发布:大数据探索性分析 编辑:程序博客网 时间:2024/05/01 15:40
三目运算符增强
int main()
{
int a = 10;
int b = 20;
//返回一个最小数 并且给最小数赋值成3
//三目运算符是一个表达式 ,表达式不可能做左值
(a < b ? a : b )= 30;
printf("a = %d, b = %d\n", a, b);
system("pause");
return 0;
}
1)C语言返回变量的值 C++语言是返回变量本事
2)
C语言中的三目运算符返回的是变量值,不能作为左值使用
C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方
注意:
3)
三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用
(a < b ? 1 : b )= 30;
4)C语言如何支持类似C++的特性那?
变量的本质是内存空间的别名,是一个标号。
const专题讲座
const int a;
int const b;
const int *c;
int * const d;
const int * const e ;
含义:
//第一个第二个意思一样 代表一个常整形数
//第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改)
//第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改)
//第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改)
结论:
C语言中的const变量
C语言中const变量是只读变量,有自己的存储空间
C++中的const常量
可能分配存储空间,也可能不分配存储空间
当const常量为全局,并且需要在其它文件中使用
当使用&操作符取const常量的地址
符号表、编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存储空间(兼容C)
int main()
{
const int a = 10;
int *p = (int*)&a;
printf("a===>%d\n", a);
*p = 11;
printf("a===>%d\n", a);
printf("Hello......\n");
return 0;
}
C++中的const常量类似于宏定义
const int c = 5; ≈ #define c 5
C++中的const常量在与宏定义不同
const常量是由编译器处理的,提供类型检查和作用域检查
宏定义由预处理器处理,单纯的文本替换
引用专题讲座
1、 引用是C++的概念,属于C++编译器对C的扩展
int main()
{
int a = 0;
int &b = a; //int * const b = &a
b = 11; //*b = 11;
return 0;
}
2、 普通引用有自己的空间吗?
struct Teacer {
int &a;
int &b;
};
int main()
{
printf("sizeof(Teacher) %d\n", sizeof(Teacer));
system("pause");
return 0;
}
3、 //当实参传给形参引用的时候,只不过是c++编译器帮我们程序员手工取了一个实参地址,传给了形参引用(常量指针)
C++对C函数增强
内联函数
1)内联函数在编译时直接将函数体插入函数调用的地方
2)inline只是一种请求,编译器不一定允许这种请求
3)内联函数省去了普通函数调用时压栈,跳转和返回的开销
默认参数
函数默认参数的规则
只有参数列表后面部分的参数才可以提供默认参数值
一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数值
/*
函数占位参数
占位参数只有参数类型声明,而没有参数名声明
一般情况下,在函数体内部无法使用占位参数
*/
默认参数和占位参数
int func(int a, int b, int = 0)
{
return a + b;
}
int main66(int argc, char *argv[])
{
printf("func(10, 20) = %d\n", func(10, 20));
printf("Press enter to continue ...");
getchar();
return 0;
}
- C++对C的加强 总结(3)
- C++对C的加强 总结(1)
- C++对C的加强 总结(2)
- C++对C的加强 总结(4)
- C++对C的加强 总结(5)
- C++对C的加强
- C++对C的加强
- C++对C语言的加强
- 【C++】基础知识—对C语言的加强
- 【C++基础03】C++对C的加强
- C++对C的一些加强和变化
- C++对C加强专题总结:namespace,register,bool,三目运算符,类型检测,struct
- c++对于c的加强
- 【C/C++】C++对C的扩展总结
- C#-基础加强(1)
- C#-基础加强(2)
- 对十四天的c学习的总结
- 对C语言指针的总结
- 【LeetCode】Binary Tree Postorder Traversal 二叉树后序遍历递归以及非递归算法
- 实现checkbox全选打钩及消除,点击单个checkbox打钩及消除JS代码实现
- LINUX多线程读写同一个文件 加锁
- OSGI(2)框架的组件运行机制
- zookeeper qa
- C++对C的加强 总结(3)
- jquery-validation 使用
- 推荐的75本经典书籍
- 【高手回避】poj3268,一道很水的dijkstra算法题
- jquery-uploadify3.2使用心得
- 优化MyEclipse 8.6.1的启动速度与运行速度
- test
- OpenCV 中 Kmeans 用法整理
- C++对C的加强 总结(4)