初学者理解c++指针(&
很多人认为c++指针非常难理解,我觉得最难理解的就是(&和*)的用法,指针问题就迎刃而解,
万事只怕开头难,实践是检验真理的唯一标准,唯有撸代码才能理解指针,
所有我的任何见 解都在源代码注释里,
这是我第一次发博客肯定有疏忽和错误,欢迎提出宝贵的意见和建议(勿喷)!
#include<iostream>
using namespace std;
int main() {
/*在我的理解里指针系统 就是地址 (&)+变量的地址地址对应的数据(*),
然而(*)有点特别,它有3种功能 1.可以表示一个变量是指针类型(imt *),
2.也可以表示一个指针变量的所指向的地址(int* p = &x)
3,获取获取某个地址存储的数据(*p)
*/
/************************************
我们来先通过下面的实验讲一讲(&)地址
**************************************/
cout << "*********************************\n";
cout << "*************实验-**************\n";
cout << "*********************************\n";
cout << " \n";
string a; //新建字符串一个变量 a
//string b; //新建一个字符串变量 b
a = "这是a值"; //给a赋值
string& b = a; //把a的地址给b
string& c = a;//把a的地址给c
cout << "&a:" << &a << " &b:" << &b << " &c: " << &c;//我们可以看到a,b,c 的地址
cout << "a" << a << " b:" << b << " c:" << c << endl; //我们可以看到a,b,c的数据
b = "所有的数据都变成我";
cout << "*************************************\n";
cout << "修改b之后的数据...\n";
cout << "&a:" << &a << " &b:" << &b << " &c: " << &c << "\n"; //地址与14行不变
cout << "a" << a << " b:" << b << " c:" << c << endl;//a,b,c全部数据变成"所有的数据都变成我";
/*结论1, (&) 号表示取地址*/
/*结论2,我们可以看到相同地址所对应的数据是相同的*/
/*效果见 实验一的运行结果图*/ }
实验一的运行结果图
#include<iostream>
using namespace std;
int main() {
/**********************************************
我们通过下面的实验讲一讲 (*) 变量的地址对应的数据
***********************************************/
cout << " \n \n";
cout << "*********************************\n";
cout << "*************实验二**************\n";
cout << "*********************************\n";
int x = 32;
int* p = &x;// 把x的 地址 赋值给p.说人话:p表示x的地址.
int y = *p;// y= 取p的地址的值,
cout << "x的值数据:" << x << " x的地址:" << &x << " p的数据:" << p << " p的值:" << y << "\n";
/*结论1.可以表示一个变量是指针类型(imt *),
2.也可以表示一个指针变量的所指向的地址(int* p = &x)
3,获取获取某个地址存储的数据(*p) */
//***********抱歉编不下去了; */
//效果见 实验二的的运行结果图
}