指针

指针==地址:指针是一个地址,而指针变量是存放地址的变量。

int main()
{
	int a = 10;
	int b = 20;
	int *p;//定义一个整型指针变量
	int *p = &a;//int *p;p=&a;
	*p = 100;//a=100
	p = &b;
	*p = 200;//b=200
	int *pp = &p;
	*pp = &a;//p=&a
	**pp = 1000;//a=1000  (*p==a)=1000
	*pp = &b;//p=&a
	**pp = 2000;//b=2000
}

&a:获取a的地址
int a=10;整型变量存放整型值
char b=‘x’;字符变量存放字符值
double c=12.3;浮点变量存放浮点值
int *p=&a;整型指针(地址)变量存放整型指针值
*p=30;//间接访问符,解引用

*的用法:

  1. 乘法:3*4
  2. 定义一个整形指针变量:int *p
  3. 对p解引用,到达p指向的变量:*p

指针大小:x86或32位平台,4字节;
x64或64位平台,8字节。

void Swap(int *p1, int *p2)//**error**,没有解引用,只改变指针指向
{
	int tmp = *p1;
	p1 = p2;
	p2 = tmp;
}
void Swap(int *p1, int *p2)//**error,**
{
	int *tmp;//野指针,悬挂指针 没有访问权限的指针(地址)
	*tmp = *p1;
	*p1 = *p2;
	*p2 = *tmp;
}
void Swap(int *p1, int *p2)
{
	int tmp;
	tmp = *p;
	*p1 = *p2;
	*p2 = tmp;
}

子函数改变可影响到父函数,一定要传指针和解引用,两条件缺一不可

void Fun(int *p1, int *p2)//子函数
{
	*p1 = 10;
	*p2 = 20;
}
int main()//父函数
{
	Fun(&a, &b);
	printf("%d %d\n", a, b);
	return 0;
}

NULL:唯一一个标识当前指针是一个无效指针,通过该函数,将父函数中的p设为NULL

void Fun(int *p)
{
	p = NULL;
}
int main()
{
	int a = 10;
	int *p = &a;
	//p=NULL;
	Fun(p);
	printf("%d\n", *p);
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值