要弄清楚指针就要弄清楚内存地址和内存数据,就比如我们去买东西,某个店铺的地址(指针变量pa)就是内存地址&a,而店铺名(普通变量a)就是普通变量a,店铺里的商品(*pa)就是内存数据。
1.指针变量含义
要弄清楚指针就要弄清楚指针变量含义,即内存地址。
2.指针变量的定义
接下来说指针变量的定义
指针变量定义说白了,就是普通的变量定义(<数据类型,int,float等> <变量名>)中间加了一个*,即(<数据类型,int,float等> * <变量名>),加*只为了在指针变量声明的时候表明这个是指针变量
3.两大符号
然后就是两大符号
1.&:取址符
作用:根据普通变量(内存数据)获得普通变量的内存地址,即指针变量,就像咱们平常找店铺(普通变量a)的地址(内存地址),用&a去获得该内存地址。
//&取址符:根据变量(内存数据),获取变量的内存地址
cout << "变量a的内存地址"<< &a << endl;
cout << "变量b的内存地址" << &b << endl;
2.*:取值符
作用:根据指针变量(内存地址)获得指针变量的内存数据,即变量的值,就像咱们平常去商店地址(内存地址)找到商店(普通变量),然后买商店里的东西(内存数据)。
//*取值符:根据变量内存地址(指针变量),从内存中获取变量的值
cout << "*(&a):根据a的内存地址取值-》"<< * (&a) << endl;
cout <<"a变量的内存:"<< a << endl;
4.详细代码
// 指针.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//变量:内存数据
// 指针变量:内存地址
//&取址符:根据变量(内存数据),获取变量的内存地址
//*取值符:根据变量内存地址(指针变量),从内存中获取变量的值
#include <iostream>
using namespace std;
int main()
{
int a = 10;
float b = 9.7f;//9.7默认为double 类型,加f表明为float类型
int c = 20;
&取址符:根据变量(内存数据),获取变量的内存地址
//cout << "变量a的内存地址"<< & a << endl;
//cout << "变量b的内存地址" << &b << endl;
*取值符:根据变量内存地址(指针变量),从内存中获取变量的值
//cout << "*(&a):根据a的内存地址取值-》"<< * (&a) << endl;
//cout <<"a变量的内存:"<< a << endl;
//int类型指针,只能存int类型的地址
// float类型指针,只能存float类型的地址
//指针变量的定义 <类型> * <变量> 存地址
// 指针变量是*后面的变量,
// *不是指针变量名的一部分,加一个*只为表示该变量是一个指针变量
// 指针变量的作用就是获取变量的地址
int* pa = &a;//指针必须初始化为地址
float* pb = &b;
cout <<"a变量的内存地址为指针变量即pa->:"<< pa << endl;
cout << "b变量的内存地址:" << pb << endl;
//通过指针变量(内存地址)去取值(内存数据)
cout << "a变量的值为从内存地址中取值,用*(取值符)加指针变量去取a的值->*pa,即" << *pa << endl;
cout << "b的值用指针来取值:" << *pb << endl;
//指针的常用操作
//指针可以不指向普通变量
int* p;
p = pa;//给指针变量赋值,获取a地址的内存数据
cout <<"*p:"<< * p << endl;
cout <<"*pa:"<< * pa << endl;
// 修改*p=100后,普通变量的值也为100,*pa的值也为100
*p = 100;//将p地址的内存数据修改为100,因此,普通变量a,*pa的内存数据也是a
cout << *p << endl;
cout << *pa << endl;
cout << a << endl;
//容易出错的地方,指针如果没有初始化,不能使用
/* int* p1;
int* p2;
cout << p1 << " " << p2 << endl;*/
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件