C语言入门-指针1

前言
目前对于军工企业或者说是嵌入式行业,C语言是不可替代的一部分,因此开展简单的分析、学习、讨论,同时推荐一个非常小的C语言编译、调试软件《Dev-Cpp》,如果需要的小伙伴评论区留言即可。

一、C语言-指针

指针:指针是什么?指针是可以直接操作内存的一种工具,而内存是计算机的重要部分,计算机通过而指针可以直接操作内存,从而可以使得不同函数间变量传递数据更加方便,简化代码,要不然整个工程将会有大量的全局变量。

内存:内存分为物理内存和虚拟内存,程序中运行操作的内存多为虚拟内存,而虚拟内存的产生由物理内存映射得到,而映射的方式通过存储器管理单元MMU进行管理。

物理内存:物理内存的大小取决于芯片的地址线的多少,例如32位的CPU计算机,有32个地址线,也就有2^32=4G空间大小的内存。

操作方式:cpu可以执行代码指令,指令可以操作内存,当你往这个内存单元里面写入数据时,芯片的引脚的电压会发生变化,比如说我写入的是01100001,则芯片上与之对应的8个引脚的电压状态(分为高电平与低电平两种)会输出:低高高低低低低高。

二、C语言-例子1.0

2.1 以建房子为例,介绍指针这个神奇的工具;
首先,当我们建好房子的时候,那么房子里各种砖块的位置是固定的,整个房间的大小可以比喻为计算机CPU的内存大小,也就是物理内存,而砖块所在的位置也就是C语言中变量的地址。
如果我们想要更改砖块的类别,想要从红砖换成蓝砖,那么此时对于房子来说,就必须将原来的砖块拆除,然后替换为新砖块。
而对于C语言来说,如果想要改变变量的值,则需要重新赋值,但是C语言提供一种方法,也就是指针,也可以改变一个变量的值。
例如:

#include "stdio.h"
	int main(void)
	{
		int a=3;   //定义一个变量a;
		int*p=NULL;//定义一个指针p;
		p=&a;//将a的地址给指针p,那么此时指针p就可以操作a的值了;
		*p=1;//使用取值符*,获取指针p指向地址的值,然后将1赋值给它,此时变量a也就变成了1;
		printf("a=%d\n",a);
	}

上面就是使用指针的简单操作,最终打印输出->(a=1)

2.2 其次,对于指针地址的具体形象,也就像房子里面的砖块一样,具体表现就是第一块转、第二块、第三 块…,而C语言的单位是字节,如第一个字节、第二个字节…;
我们都知道,int型的字节为4个字节,也就占4个位置,比如1999-2003,这个地址,就是int a=3的地址;而我们利用指针工具获取的地址,一般为变量的首位地址,即1999,即p=&a=1999。

2.3 int p;其中的为数据类型标识符;p为指针变量名
int代表指针只能储存int类型变量的地址;此时的p仅仅定义了指针变量,还没有指向确定的变量地址,因此此时是随机地址;
这也是为什么需要在初始化的时候,int
p=NULL;//定义一个指针p,将NULL赋值给指针P的原因,就是防止随机地址指向一个非法地址,导致程序报错。

2.4 Int a=3;Int p=&a;此时就将a的地址符(假设首地址为1999)赋给指针变量p,那么此时指针变量p表示1999;
p表示解析指针变量p,即*p=a,p表示a这个变量真实的内存;操作p同样会作用于a,而操作p只是简单的改变地址。

三、C语言-总结

后续小编会继续更新,争取将C语言这个大房子建的越来越好。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值