C语言之精华—指针入门


指针就是地址
指针变量就是存放地址的变量

指针概念

地址的引入

A:你好,请问这附近哪里有花店?
B:有“菊花台”花店。
A:请问“菊花台”花店在哪里?
B:中山路102号

	int juhuatai=10;	通过变量名直接访问变量
	地址:scanf("%d",&juhuatai);.变量的访问有两种方式:
	1.变量名
	2.地址
	int juhuatai;
	int meiguitai;
	
	printf("ju=%d\n",juhuatai);
	printf("mei=%d\n",meiguitai);
	
	printf("ju的地址是:%p",&juhuatai);
	printf("mei的地址是:%p",&meiguitai);
	//二.& 取地址 取变量名所代表的变量的内存地址
	
	printf("通过地址的方式获取:ju=%d",*(&juhuatai));
	printf("通过地址的方式获取:meicc=%d",*(&meiguitai));
	//三.* 此时*代表的是一个运算符,根+-*/运算符类似,该运算符的功能是取出内存中数据的值(取内容)

指针=地址

指针变量

	int a=10;				//整型变量
	a=100;
	char c='b';				//字符变量
	int array[3]={1,2,3};	//数组变量
	
	int* p;		//定义一个指针变量 存放的是地址
	p=&a;		//给指针变量赋值
	*p=&a		//错误的!!!这么写是狗!!!
	int* p2=&a;	//定义并初始化一个指针变量
	//a c array有何异同点
共同点:
a c array都是变量

不同点
变量的类型不同
a		整型变量
c		字符变量
array	数组变量
	问:什么变量能存放地址,存放的是地址变量
		答:指针变量存放的是地址
	问:怎么才能定义一个指针变量
		答:int *p;
			char *q;???
			int* p 指针变量 存放的是地址

归纳分析:

  1. 指针变量就是存放地址的变量
  2. 只有在定义一个指针变量的时候,才是一个指针的标识符其他情况,都是一个运算符

指针访问变量

	int juhuatai=10;
	int meiguitai;
	mieguitai=9;
	
	int *p=&juhutai;
	int *q;
	q=&meiguitai;
	
	printf("ju=%d\n",juhuatai);
	printf("mei=%d\n",meiguitai);
	
	printf("ju的地址是:%p\n",p);
	printf("mei的地址是:%p\n",q);
	//二.& 取地址 取变量名所代表的变量的内存地址
	
	printf("通过地址的方式获取:ju=%d\n",*p);
	printf("通过地址的方式获取:meicc=%d\n",*q);
	//三. 此时*代表的是一个运算符,根+-*/运算符类似,该运算符的功能是取出内存中数据的值(取内容)

指针分类

	int a=10;
	char c='A';
	int *p1=&a;
	int *p2=&c;
	
	printf("a=%d\n",*p1);	//一.指针访问整数
	printf("a=%c\n",*p2);	//二.指针访问字符
	
	//指针++
	printf("a的地址打印:%p\n",p1);
	printf("a的地址++打印:%p\n",++p1);
	printf("c的地址打印:%p\n",p2);
	printf("c的地址++打印:%p\n",++p2);	
	
	int array[3]={1,2,3};
	//数组 关心的是数组的·首地址 两种方式:1.数组名=地址   2.第一个元素的地址
	printf("第一个元素的地址是:%p\n",&array[0]);
	printf("第一个元素的地址是:%p\n",&array[1]);
	printf("第一个元素的地址是:%p\n",&array[2]);
	for(int i=0;i<3;i++)
	{
		printf(" %d ",array[i])
	}

	int *parray;
	parray=&array[0];	//指针访问数组
	//parray=array;
	//printf("第一个元素的地址是:%p\n",parray++);
	//printf("第一个元素的地址是:%p\n",paray++);
	//printf("第一个元素的地址是:%p\n",parray);
	for(int i=0;i<3;i++)
	{
		printf(" %d ",*parray);
		//printf(" %d ",parray[i]);
		array++;
	}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会编程的小江江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值