c语言学习---------指针初步

指针的定义与初始化

指针:实质同于地址
指针定义:数据类型 + * +名字
指针初始化:int *p=&a;

指针小练习:(加深理解)

int a=10;

int b=20;

int *p=&a;

*p=100;

p=&b;

*p=200;

int **pp=&p;

*pp=&a;

**pp=1000;

*pp=&b;

小练习答案:

int a=10;

int b=20;//初始化

int *p=&a;//取a的地址

*p=100;//通过指针p,访问到a,使a目前值为100

p=&b;//p取b的地址符

*p=200;//通过指针p,访问到b,使b目前值为200

int **pp=&p;//初始化,二级指针,保存一级指针p的地址

*pp=&a;//指针pp,先指向p,后p指向a

**pp=1000;//pp指针指向p,解引用两次,找到a,给a赋值为1000

*pp=&b;//指针pp,先指p,后p指向b(解引用一次,找p)

**pp=2000;//解引用了两次,则给b赋值

小练习里面的指针pp实际上情况为,指向指针的指针,其具体情况如下图
在这里插入图片描述

指针和普通变量唯一区别:指针多一步解引用

指针在32位平台下,指针内存大小不论数据类型都为4;64位平台下是8;

*在c语言中作用:1.乘法 2.在指针中解引用 3.定义指针时,说明类型说明符
小练习:

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int* p1 = &a;
	//定义一个整型指针p2,指向整型变量b
	
	//定义一个整型指针,指向整型变量c
	
	//通过指针p1,修改a的值为100
	
	//通过指针p2,修改a的值为200

	//通过指针p3,修改a的值为300
	
	//实现让c=a+b(不使用a,b,c)
	
	//实现让c=a/b(不使用a,b,c)

	//实现让c=c+1 (不使用a,b,c)
	
	//打印a,b,c的值
	
	return 0;
}

小练习答案:

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int* p1 = &a;
	//定义一个整型指针p2,指向整型变量b
	int* p2 = &b;
	//定义一个整型指针,指向整型变量c
	int* p3 = &c;
	//通过指针p1,修改a的值为100
	*p1 = 100;
	//通过指针p2,修改a的值为200
	*p2 = 200;
	//通过指针p3,修改a的值为300
	*p3 = 300;
	//实现让c=a+b(不使用a,b,c)
	*p3 = *p1 + *p2;
	//实现让c=a/b(不使用a,b,c)
	*p3 = *p1/ * p2;//优先级运算符
	//实现让c=c+1(不使用a,b,c)
	*p3 += 1;
	//打印a,b,c的值
	printf("%d\n", *p1);
	printf("%d\n", *p2);
	printf("%d\n", *p3);
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值