我是靠谱客的博主 斯文背包,最近开发中收集的这篇文章主要介绍C语言——指针,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、地址

不管是指针还是数组定义后一定要初始化啊!!!!!!!!!!!!!!!!

//打印地址的方法 %p
int a=0;
printf("a=%dn",*(&a));//&代表取地址,*代表取一个地址里的值(内容)

	int a=3;
	int *p=&a; 
	printf("a的地址:%pn",&a);
	printf("a=%dn",*((int *)0x000000000064FE14));//(int *)将后面的16进制数转换为地址,
												  //*代表取一个地址里的值(内容)

二、指针变量的定义

int a=10;
int *p;//或 int *p;
//初始化
int *p=&a;
p=&a;//*p=&a是万万不可的

星号(*)只有在定义一个指针变量时才是指针的标识符,其他情况都是
取内容的运算符!!!

三、数组的访问方式

    int a[3]={1,2,3};
	int *p=&a[0];  //数组首元素地址=数组地址=数组名 
	
	//1.直接通过数组访问 
	for(int i=0;i<3;i++){
		printf("%dn",a[i]);
	}
	
	//2.利用指针访问 
	for(int i=0;i<3;i++){
		printf("%dn",*p++);    //指针分类型,指针++根据类型的不同偏移值不同
	}	             
	
	p=a;//数组首元素地址=数组地址=数组名 
	//3.数组指针当数组名来用,
	for(int i=0;i<3;i++){
		printf("%dn",p[i]);
	}

四、为什么要用指针?

1.可以在你想要的地址的地方写入数据,这也是c语言指针的强大之处,Java做不到;

	//ARM架构 裸机编程 ARM驱动
	int *p=(int *)0x000000000064FE1C; 
	*p=1;//这里不知道为什么我的DevC++会报段错误
	printf("%p,%dn",p,*p);


	//但是一般要加volatile,其作用是提升程序正确度,但会牺牲一点的效率,
	//详情:https://blog.csdn.net/joy2017/article/details/83583984
	volatile int *p=(volatile int *)0x000000000064FE1C;
	int *p=(int *)0x000000000064FE1C; 
	*p=1;
	printf("%p,%dn",p,*p);
	

最后

以上就是斯文背包为你收集整理的C语言——指针的全部内容,希望文章能够帮你解决C语言——指针所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部