【C语言及程序设计】指针运算符实验

 1 // 指针运算符实验.cpp:   
 2 //  
 3   
 4 #include "stdafx.h"  
 5 #include <iostream>  
 6 using namespace std;  
 7   
 8   
 9 int main()  
10 {  
11     int x, *p, *q = &x;  
12     cin >> x;  
13     p = &x;  
14       
15     cout << endl;  
16   
17     cout << "  p = " << p << endl;  
18     cout << "  *p = " << *p << endl;  
19     cout << "  *&x = " << *&x << endl;  
20     cout << "  &*p = " << &*p << endl;  
21     cout << "  *&p = " << *&p << endl;  
22   
23     cout << endl;  
24   
25     cout << "  q = " << q << endl;  
26   
27     return 0;  
28 }  

执行结果为

指针运算中,最令人费解的一句语法就是

int *q = &x;  

因为通常我们(菜鸟)定义某个变量,或是给某个变量赋值/初始化,其余运算符都在 = 运算符右边(表达式);

然而这句中,*运算符(contents of operator/dereferencing operator)却位于 = 左边,给人的一种,*也是指针名的一部分,的错觉;

然而事实上,*是一个运算符(话说这如何同乘法运算相区别?)

所谓的*,指针运算符/间接访问运算符,我觉得还是英文名更加形象,容易理解:

contents,即内容,访问指向的变量地址,将变量单元中的内容(value)给取出来

*p 和 p = &x 两个运算实际上,获取了变量三要素中的两个(变量值、变量的储存单元),唯一不同的就只有变量名

故,*p(对 &x 执行 * 运算)又称变量 x 的别名

Youtube真是基础课学习神器啊

 Introduction to Pointers in C++, Tutorial on Pointers, C++ Pointers

=

猜你喜欢

转载自www.cnblogs.com/miyazakehime/p/9119562.html
今日推荐