6.1 指针的认识

指针=地址

指针变量:存放地址的变量。

指针变量的定义(声明):*的标识作用只产生在指针变量的定义或声明的时候。

指针变量的访问:地址;变量名

int *p;

取值运算符*:把内存地址中的数据取出来。

printf("地址访问a:%d\n",*(&a))
#include <stdio.h>
int main()
{
	int a = 0x1234;
	int *p = &a;
	char *c ;
	c=&a;
	
	printf("p=%p\n",p);
	printf("c=%p\n",c);
	
	printf("a= %x\n",*p);
	printf("a=%x\n",*c);
	return 0;
}

 

*运算符会根据指针大小类型,访问不同的内存空间。

int *p为整型会访问完整的4个字节32位;而char *c是1个字节占8位,只能访问前面8位节点,剩下的24位全部被忽略。

指针区分类型:

①决定指向空间的大小:不同类型 int,char……不同类型占用空间不同。

②决定增量:不同类型数据,访问内存中的值时跨度不同。所以定义指针时要求变量一致。

 为什么要用指针:

①利用指针间接访问数值,实现两个数的交换:

#include <stdio.h>
void changeData(int *pdata1,int *pdata2){    //取地址的值交换数值
	int temp;
	temp = *pdata1;
	*pdata1 = *pdata2;
	*pdata2 = temp;
	
	
}


int main()
{
	int data1 = 10;
	int data2 = 20;
	
	printf("交换前:data1 = %d,data2=%d\n",data1,data2);
	
	changeData(&data1,&data2);  //传递数据地址
	printf("交换后:data1 = %d,data2=%d\n",data1,data2);
	return 0;
}

②指针指向固定的区域:

#include <stdio.h>
int main(){
	int a = 10;
	printf("adress of a is 0x%p\n",&a);
	int *p =(int *)0x000000000061FE2D;        //指定p的空间地址为0x000000000061FE2D
	
	printf("p = 0x%p\n",p);
	return 0;
}

输入三个数a,b,c,不管怎么输入都是a,b,c三个数从大到小顺序输出:

#include <stdio.h>
int sortFromLagrest(int *a,int *b ,int *c){
	int temp;
	if(*a<*b){
		temp = *a;
		*a = *b;
		*b = temp;
	}
	if(*a<*c){
		temp = *a;
		*a = *c;
		*c = temp;
	}
	if(*b<*c){
		temp = *b;
		*b = *c;
		*c = temp;
	}
	
}


int main(){
	int a;
	int b;
	int c;
	puts("请输入三个数a,b,c:");
	scanf("%d%d%d",&a,&b,&c);
	sortFromLagrest(&a,&b,&c);
	printf("a的值为:%d,b的值为:%d,c的值为:%d",a,b,c);
	return 0;
	
}

相关推荐

  1. 6.1 指针认识

    2023-12-22 17:24:01       38 阅读
  2. 611. 有效三角形个数(双指针

    2023-12-22 17:24:01       12 阅读
  3. 指向函数指针

    2023-12-22 17:24:01       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-22 17:24:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-22 17:24:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-22 17:24:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-22 17:24:01       18 阅读

热门阅读

  1. SQL server 数据库 sql常用语句

    2023-12-22 17:24:01       44 阅读
  2. 基于SpringBoot的体育馆使用预约管理系统

    2023-12-22 17:24:01       49 阅读
  3. Zookeeper 集群搭建过程中常见错误

    2023-12-22 17:24:01       26 阅读
  4. DeamonSet详解

    2023-12-22 17:24:01       31 阅读
  5. vue介绍以及基本指令

    2023-12-22 17:24:01       30 阅读
  6. LeetCode239. Sliding Window Maximum

    2023-12-22 17:24:01       33 阅读
  7. Macos 删除过期失效的软链接symlink

    2023-12-22 17:24:01       43 阅读
  8. 【PHP】取出数组中的第一个元素

    2023-12-22 17:24:01       41 阅读