指针是什么?指针怎么理解?怎么理解指针?最简单最通俗的讲解,即使不理解,记住之后也会理解代码,非常有效,希望对你有帮助!升级版

先要知道几句话

  1. int *p;//p是变量名,类型是int *
  2. p=&i;//i的地址赋值给p,p指向了i
    //修改p的值不影响i 的值,修改i的值不影响p的值
    //*p就是 i 有的地方*p可以和i互换

注意顺序:

1先有 int *p;

2先有 int i=10;

3 p和i产生了关系 即 p=&i;

4 结果是 *p=i;

指针与结构体的使用,点击这里数据结构 链表 结构体与指针与typedef

下面是代码

例子1


#include <iostream>
using namespace std;


int main()
{
	int *p;//p是变量名,类型是int *
	int i=10;
	
	p=&i;//i的地址赋值给p,p指向了i
	//修改p的值不影响i 的值,修改i的值不影响p的值
	//*p就i 有的地方*p可以和i互换
	
	cout<<"i:"<<i<<endl;
	cout<<"*p:"<<*p<<endl; 
	
	
	return 0;
}

结果

在这里插入图片描述
可以看出 i 确实和*p一样了

例子2

#include<iostream>
using namespace std;

int main()
{
	/*注意顺序:1先有int *p; 2int i=10; 
	 3 p和i产生了关系 即 p=&i;
	 4 结果是 *p=i; 
	*/
	int * p; //变量名是p,类型是int* 
	int i=10;//定义i,赋值 
	int j=100;//定义j, 

	p=&i;//i的地址赋值给p,p指向了i 注意p在左边 、*p 就是 I
	//修改p的值不影响i的值,修改i的值不影响p的值
	// *p  就是i   是一样的可以互换,  *p=i

	j=*p;//即 j=i 

	cout<<"j:"<<j<<endl;
	cout<<"i:"<<i<<endl;
    cout<<"*p:"<<*p<<endl; 
	return 0;
}


结果

在这里插入图片描述

例子3 函数调用时的指针


#include <iostream>
using namespace std;

f(int * p)//相当于 p=&i; p获得i的地址但修改i的值不影响p的值,互不影响 
{
	*p=99;	//结果是*p=i,用的是 *p 
	cout<<"*p:"<<*p<<endl;
}

int main()
{
	int i=0; //1先定义i初始化 
	
	f(&i);//2调用函数f,i的地址赋值给p ,传递上去 
	cout<<"i:"<<i<<endl;
//	cout<<"*p:"<<*p<<endl;
	return 0;
}

结果

在这里插入图片描述

例子4,从键盘输入i,再输出


#include <iostream>
using namespace std;

f(int * p)//相当于 p=&i; p获得i的地址但修改i的值不影响p的值,互不影响 
{
	*p=99;	//结果是*p=i,用的是 *p 
	cout<<"*p:"<<*p<<endl;
}

int main()
{
	int i=0; //1先定义i初始化 
	cout<<"输入i:"<<endl;
	cin>>i; 
	f(&i);//2调用函数f,i的地址赋值给p ,传递上去 
	cout<<"i:"<<i<<endl;
//	cout<<"*p:"<<*p<<endl;
	return 0;
}

结果

在这里插入图片描述

可以看出修改 i 的值不影响p的值

例子5 改变i和p的值


#include <iostream>
using namespace std;

f(int * p)//相当于 p=&i; p获得i的地址但修改i的值不影响p的值,互不影响 
{
	*p=0;	//结果是*p=i,用的是 *p 
	cout<<"输入*p:";
	cin>>*p; 
	cout<<"*p:"<<*p<<endl;
}

int main()
{
	int i=0; //1先定义i初始化 
	cout<<"输入i:"<<endl;
	cin>>i; 
	f(&i);//2调用函数f,i的地址赋值给p ,传递上去 
	cout<<"i:"<<i<<endl;
//	cout<<"*p:"<<*p<<endl;
	return 0;
}

结果

在这里插入图片描述

可以看到,修改i的值,p不改变,修改p的值i不改变

重点是最前面的那几句话

感谢郝斌老师!!!

如果对你有帮助,请 点赞 支持一下

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值