[C++]引用和三目运算符

来源:互联网 发布:informix数据库端口 编辑:程序博客网 时间:2024/06/05 06:59
#include <iostream>
using namespace std;
/*
引用 Type& name < -- > Type* const name
C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
当实参传给形参引用的时候,只不过是c++编译器帮我们程序员手工取了一个实参地址,
传给了形参引用(常量指针)

当函数返回值为引用时
若返回栈变量
不能成为其它引用的初始值
不能作为左值使用
若返回静态变量或全局变量
可以成为其他引用的初始值
即可作为右值使用,也可作为左值使用
*/
struct Teacher{
int age;
};

int& getA()
{
int a;
a = 10;
return a;
}

//指针引用
int getB(Teacher*  &myp)
{
myp = (Teacher *)malloc(sizeof(Teacher));
myp->age = 34;
return 0;
}

//三目运算符
/*
1)C语言返回变量的值 C++语言是返回变量本事
2)C语言中的三目运算符返回的是变量值,不能作为左值使用
   C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方
3)三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用
   (a < b ? 1 : b )= 30;
*/
void getC()
{
int a = 10, b = 20;
(a > b ? a:b) = 30;
printf("三目运算符:a: %d b:%d\n", a, b);
}
int main()
{
int a = getA();
int &b = getA();//乱码
printf("引用&:%d\t", a);
printf("%d\n", b);

//
Teacher *t1;
getB(t1);
printf("指针引用:%d\n", t1->age);

getC();
getchar();
return 0;
}

0 0
原创粉丝点击