C++引用变量alias相关代码运行逻辑求解释
C++代码运行逻辑解释
#include<iostream> void main() { int a = 32, *p = &a; char c ='A', &ch = c; ch += a; *p += c; cout << "\n" << a << " " << c << endl; }
注:代码里的
void main()是不符合现行C++标准的写法,标准写法应为int main(),函数末尾加return 0;,仅部分老编译器兼容该非标准写法。
下面逐行拆解运行逻辑:
- 第一步:
#include<iostream>
引入C++标准输入输出库,代码中用到的cout输出功能由这个库提供。 - 第二步:
int a = 32, *p = &a;
定义整型变量a,初始值为32;同时定义整型指针p,把a的内存地址赋值给p,后续对*p的取值、修改操作都会直接作用到变量a上。 - 第三步:
char c ='A', &ch = c;
定义字符型变量c,初始值为大写字母A,A对应的ASCII码数值是65;同时定义字符型引用ch,ch是c的别名,对ch的所有操作完全等价于直接操作c。 - 第四步:
ch += a;
等价于执行c = c + a,代入数值计算:65 + 32 = 97,97对应的ASCII字符是小写字母a,这行执行完后c的值变为a,对应数值为97。 - 第五步:
*p += c;
等价于执行a = a + c,运算时c会自动隐式转换为整型,取对应数值97参与计算,代入数值:32 + 97 = 129,这行执行完后a的值变为129。 - 第六步:
cout << "\n" << a << " " << c << endl;
先输出换行,然后输出a的数值129,接着输出空格,再输出c对应的字符a,最后输出换行。
最终运行输出结果为:129 a
内容的提问来源于stack exchange,提问作者Nutan Saini
相关产品推荐
相关产品推荐

