C语言*p=*r与p=r区别-创新互联

p = r 时
int main()
{int a = 1;
	int b = 2;
	int* p, * r;
	p = &a;
	r = &b;
	printf("a = %d\n", a);	//a = 1
	printf("p = %d\n", p);	//p = -1133513004
	printf("r = %d\n", r);	//r = -1133512972
	printf("p = %d\n", *p);	//p = 1
	printf("r = %d\n\n", *r);//r = 2
	p = r;
	printf("a = %d\n", a);	//a = 1
	printf("p = %d\n", p);	//p = -1133512972
	printf("r = %d\n", r);	//r = -1133512972
	printf("p = %d\n", *p);	//p = 2
	printf("r = %d\n\n", *r);//r = 2
	return 0;
}

此时a的值仍为1。

创新互联建站是一家专注于网站制作、网站建设与策划设计,湟源网站建设哪家好?创新互联建站做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:湟源等地区。湟源做网站价格咨询:028-86922220*p = *r时,

下面仅将 p = r 改为 *p = *r。

int main()
{int a = 1;
	int b = 2;
	int* p, * r;
	p = &a;
	r = &b;
	printf("a = %d\n", a);	//a = 1
	printf("p = %d\n", p);	//p = -1133513004
	printf("r = %d\n", r);	//r = -1133512972
	printf("p = %d\n", *p);	//p = 1
	printf("r = %d\n\n", *r);//r = 2
	*p = *r;
	printf("a = %d\n", a);	//a = 2
	printf("p = %d\n", p);	//p = -1133512972
	printf("r = %d\n", r);	//r = -1133512972
	printf("p = %d\n", *p);	//p = 2
	printf("r = %d\n\n", *r);//r = 2
	return 0;
}

此时a的值改变了。

由此得出结论
  • p=r 是将
    原本 p 指向 a 的地址,改变为跟随 r 指向了 b 的地址,
    原:p---->a , r—>b
    现:p—>b , r—>b

p=r 是改变p的地址

  • *p = *r是将
    p指向a的那块地址(即a所在的内存地址),里面的值改为 *r 的值(即b的值)
    原:p---->a , r—>b *p = 1,*r = 2
    现:p---->a , r—>b *p = 2,*r = 2

*p = *r是改变p指向的那块地址里面的值

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:C语言*p=*r与p=r区别-创新互联
URL网址:http://scjbc.cn/article/jgcjd.html

其他资讯