【C语言篇】指针初识

一、指针==地址

#include <stdio.h>

int main()
{
	int a = 10;
	printf("a=%d\n",a);
	printf("a的地址是:0x%p\n",&a);//& 取地址运算符
	printf("a=%d\n",*(&a));//取值运算符,它把后面跟的内存地址中的数据“取出来”
	
	return 0;
}

二、指针变量

1. 变量访问的两种方式:(1)变量名直接访问(2)指针(地址)间接访问

2.指针变量==存放地址的变量

#include <stdio.h>

int main()
{
	//什么是整型变量,存放整型数的变量
	//什么是字符变量,存放字符型数据的变量
	//什么是指针变量,存放指针的变量
	//什么是指针变量,存放地址的变量
	
	int a = 10;
	int *p;//这里的*是一个标识符,告诉系统我是一个指针变量,用来存放别人的地址,和下方的运算符不同
	p = &a;
	printf("变量名访问a:%d\n",a);
	printf("a的地址是:0x%p\n",&a);
	printf("地址访问a:%d\n",*(&a));//取值运算符,它把后面跟的内存地址中的数据“取出来”
	printf("指针变量访问a:%d\n",*p);
	
	return 0;
}

3.既然指针变量是存放别人地址的变量,那什么要区分类型呢 ?

(1)决定指向空间的大小(2)决定增量

#include <stdio.h>

int main()
{
	int a = 0x1234;
	int *p = &a;//int 4个字节
	char *c = &a;//char 1个字节
	
	printf("p=%p\n",p);
	printf("c=%p\n",c);
	
	printf("a=%x\n",*p);//取值的时候出现了问题,取值运算符会根据指针变量类型,访问不同大小的空间
	printf("a=%x\n",*c);
	
	printf("++p=%p\n",++p);
	printf("++c=%p\n",++c);
	
	return 0;
}

 

 三、为什么要使用指针?

1.封装一个函数,实现两个数的交换

 

#include <stdio.h>
//访问变量有两种方式(1)变量名直接访问(2)指针间接访问
void changeData(int *pdata,int *pdata2)
{
	int tmp;
	tmp = *pdata;
	*pdata = *pdata2;
	*pdata2 = tmp;
}

int main()
{
	int data = 10;
	int data2 = 20;
	
	printf("交换前:data=%d,data2=%d\n",data,data2);
	changeData(&data,&data2);
	printf("交换后:data=%d,data2=%d\n",data,data2);
	
	return 0;
}

 2.指针指向固定的区域

#include <stdio.h>

int main()
{
	int a = 10;
	int *p = (int *)0x000000000061FE1E;
	
	printf("address of a is 0x%p\n",&a);
	printf("p=0x%p\n",p);
	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿gao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值