- 2.11
extern int ix = 1024
定义
int iy
定义
extern int iz
声明
- 2.12
合法:
double Double = 3.14;
int _;
非法:
int double = 3.14;
int 1_or_2 = 1;
int catch-22;
- 2.13
int i = 42;
int main()
{
int i = 100;
int j = i;
return 0;
}
新建了局部变量i,覆盖了全局变量i,故j=100。
- 2.14
int i = 100, sum = 0;
for (int i = 0; i != 10; i++)
sum += i;
std::cout << i << " " << sum << std::endl;
for循环中定义的i的作用域只在循环内,循环外i=100,sum=45。
- 2.15
int ival = 1.01;
int &rval1 = 1.01;
int &rval2 = ival;
int &rval3;
1,3正确。
2引用的初始值必须是个对象。
4引用无初始值。
- 2.16
int i = 0, &r1 = i;
double d = 0, &r2 = d;
r2 = 3.14159;
r2 = r1;
i = r2;
r1 = d;
1.正确,d赋值3.14159。
2.正确,会自动转换类型。
3.正确,但值会被截断。
4.正确,但值会被截断。
- 2.17
int i, &r1 = i;
i = 5;
r1 = 10;
std::cout << i << " " << r1 << std::endl;
i赋值5, i赋值10, 故输出 10 10。
- 2.18
int a = 1, b = 2, *point = &a;
std::cout << *point << std::endl;
point = &b;
std::cout << *point << std::endl;
*point = 0;
std::cout << *point << std::endl;
输出为 1 2 0
- 2.19
指针与引用的区别:
- 引用是已存在的一个对象的别名。 指针就是一个对象。
- 一旦初始化,引用与对象绑定,不能重新引用引用其他对象, 指针可以分配和复制。
- 引用绑定最初的对象, 指针可以指向不同的的对象。
定义引用时必须初始化, 定义指针时不需要初始化。
- 2.20
int i = 42;
int *p1 = &i;
*p1 = *p1 * *p1;
定义整形变量i赋值为42, 定义整形指针p1赋值为i的地址。
p1指向i改变i的值为1764。