欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-16 21:26:20
...
// 指针运算符实验.cpp: 
//

#include "stdafx.h"
#include <iostream>
using namespace std;


int main()
{
	int x, *p, *q = &x;
	cin >> x;
	p = &x;
	
	cout << endl;

	cout << "  p = " << p << endl;
	cout << "  *p = " << *p << endl;
	cout << "  *&x = " << *&x << endl;
	cout << "  &*p = " << &*p << endl;
	cout << "  *&p = " << *&p << endl;

	cout << endl;

	cout << "  q = " << q << endl;

    return 0;
}

执行结果为


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


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

	int *q = &x;

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

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


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


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

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

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


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

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


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


Youtube真是基础课学习神器啊

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