栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言指针学习

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言指针学习

C语言指针学习 指针简介

指针与底层硬件联系紧密,使用指针可以操作数据的地址,实现数据的间接访问。

操作方式

int *p;//定义了一个指向int型数据的指针变量
如果*号放在前面:如int *p,pi;//则说明这两个变量都为int型的指针
操作方式
取地址 p=&a; //将数据a的首地址赋值给p
取内容 *p; //取出指针所指向的数据单元
指针加 p++; //使指针的数据地址向下移动一个相应的数据单元,比如int数据向下移动一个数据单元就是4字节;
p+5; //指针的地址相加5个相应的数据单元;
指针减 p–; //指针向上移动一个相应的数据单元
p-5; //指针向上移动5个相应的数据单元;

1字节=8bit
int 为4字节
long 为4字节
float 为4字节
short 为2字节
char 为1字节
double 为8字节

指针和数组的关系

比如char c[ ]={ 0x33,0x34,0x35};
当0x33的内存首地址为0x4000;
定义char *c=0x4000;
这时

				c[0]=*c
				c[1]=*(c+1);
				c[2]=*(c+2);

malloc函数进行对计算机内存空间进行分配
比如 :malloc(数目*字节大小)
malloc(5*4);//分配5个4个字节的空间也就是20个字节的空间

指针所占用的数据位宽为是由系统所决定的。
比如:16位的系统占用的字节数位2
32位的系统占用的字节数位4
64位的系统占用的字节数位8

指针的应用 1.参数(数组)传递

例子:

主函数中调用寻找最小值的函数,传递给函数SZ的为hh[]数组的地址,因此如果在findmin函数中进行对数组值的修改的话,在主函数中的数值也会被更改。
如果不想传递过去的数组被更改则需要在传递的数组地址前加const

//int findmin(const int *SZ,int SL);//hh[]数组值被修改将会报错
int findmin(int *SZ,int SL);
{
	int i,min;
	min=SZ[0];
	for(i=1;i
		if(SZ[i]
	int hh[]={4,3,5,6,1,3};
	int min;
	min=findmin(hh,6);
	printf("%d",min);
}

如何实现通过子函数修改主函数的数值

void ReBuild(int *num1,int *num2)
{
	*num1=26;
	*num2=44;
}
int main(void)
{
	int number1,number2;
	number1=1;
	number2=2;
	ReBulid(&number1,&number2);
	printf("number1=%dnnumber2=%dn",number1,number2);
	return 0;
}
输出结果:
		number1=26;
		number2=44;

2.传递返回值(访问封装好函数库中全局变量的数值)

比如在别人封装好的函数中

int number[88,23,42,11,323,4,3,23];
int *Getnum(void)
{
	return number;//返回的为number的首地址
}

因此在主函数中便可以使用Getnum()对上边的封装好的函数中的number数组进行调用

如:
int main(void)
{
int *b;//定义*b指针
b=Getnum();//Getnum将number的首地址赋值给了b
printf("b[0]=%d,*b=%d",b[0],*b);
}
输出结果:
		b[0]=88,*b=88;
3.单片机中直接访问物理地址下的数据

比如在单片机中的0xE5中存有数据
我们便可以定义一个指针

unsigne char *p;
p=(unsigned char*)0xE5;
//*p将读取0xE5中的数据;

再单片机无线数据传输数据的应用中对于发送浮点数,可以将float型通过指针转换为char型进行数据的发送,发送过去以后再通过float型进行解码从而得到相应的浮点数。

float num=45.233;
unsigned char *p;
p=(unsigend char *)#
SEND//进行发送;

float *fp;
fp=(float *)p;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832384.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号