C语言之指针基础一


前言

回炉重造~


提示:以下是本篇文章正文内容,下面案例可供参考

一、基本概念

1.虚拟内存

先来讲讲什么是虚拟内存

虚拟内存是在进程创建的时候操作系统分配给进程的,与物理内存之间存在映射关系

同时,操作系统会对虚拟内存分区,对于C语言而言,分区如下:

  1. : 动态申请的内存
  2. :存放局部变量
  3. 静态全局区:分为初始化过的和未初始化过的
  4. 代码区:存放程序代码
  5. 文字常量区:存放常量

2.什么是指针

什么是指针: 指针就是地址

指针变量: 是一个变量,用来存放一个地址编号任何类型的指针变量都是4个字节

​ 对应类型的指针变量只能存放对应类型的变量地址(如整型只能存整型,有几个字节就有几个地址编号)

& 取地址

*取值(在定义指针的时候起标识作用,在其他情况下都表示为 取值*+指针变量,相当于指针指向的变量

3.指针的分类

指针的分类:根据指针指向的类型作分类(字符指针,整型指针,函数指针,结构体指针,指针的指针,数组指针…

二、基本用法

1.指针与数组元素

指针++ : 指向下一个对应类型的数据

字符指针++,指针存放的地址编号+1

整型指针++,指针存放的地址编号+4

	int b[10];
	int* ptr;
	//只要将数组名赋值给同类型的指针变量,此时指针变量和数组名可以以同样的方式操作数组
	ptr = b; 
	ptr[2] = 100;
	*(ptr + 2) = 100;
	printf("b[2] = %d \n", b[2]);

2.指针运算

	//指针的运算
	int c[4] = {1,2,3,4};
	int *ptr3,*ptr4;
	ptr3 = c;
	ptr4 = &c[2];
	//ptr3 += 2;
	printf("c[2] = %d %d \n", ptr3,c); //二者差8个字节
	printf("%d\n", ptr4 - ptr3); //相同类型的指针可以作减法
	printf("%d", *ptr4);

3.注意事项

  1. 指针变量只能保存已经开辟好空间的地址,它不能自己开辟地址,也就是不能随意保存一个地址变量
  2. 类型不同的指针变量需要强制类型转换
  3. *+指针 取值能取几个字节是由指针类型决定的,字符指针 能取一个字节,整型指针能取4个字节,double指针能取8个字节

总结

未完待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值