从零开始的指针运用1
从零开始的指针运用1
前言:C语言相对于其他语言的优势是指针,但是指针的使用又是十分麻烦的。
这里仅仅只是说明了指针的一些简单的运用,(大牛请忽视),因为有时会忘记,
不如记录下来简单用法
1、指针
指针是C语言的一种变量,既然是变量的话,那么就是C语言自带的一种数据结构。
指针是C语言用来间接访问的工具,因为我们这里学习嵌入式的话,一定需要用到指针的知识。
就是你做单片机的运用的时候,有没有想过,为什么我向寄存器中写一个值,它就会点灯和一些
操作,首先,CPU通过寄存器间接访问可以知道内存的地址,比如你这个IO口的资源到底是哪一块的
内存当中的,接着向那块内存写东西的话,那么就会响应。
2、指针的简单运用
指针的运用和其他变量一样的,都需要定义先。
1、定义指针变量----向内存申请一块内存
int *p;
PS:可能有人会问我,为什么指针是变量,int也是变量,为什么int a; a = 10;
就可以直接使用了,那为什么int *p; *p=10; 不能这些定义,
原因是非常简单的,首先编译器是傻瓜,啥都不会,需要编程者给定他十全十美的条件,它才会运行。
int a; 向内存申请一个4字节的内存(32位机),至于这块内存是在哪里的,我们不需要知道,
我们只需要知道我们申请了这一块内存之后,我们可以用就可以了。
但是,int *p 是一个指针变量,我们用它是干嘛的?存变量的吗?显然不是,我们是想通过这个指针变量
找到我们需要的地址,那需要的地址你自己都不给它,它知道吗?不知道,所以就直接报错
2、因为上面的解释后,所以,第二步就是让这个指针指向我们知道的一个地方
绑定指针
int *p ;
p = & a; //指向a变量的指针
p = (int *)8; //指向地址空间为8的内存。
3、一个简单的代码程序
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p; //定义一个指针变量
int b; //定义一个整型的变量。
b = 18;
p = &b;
printf("%x \n",&b);
printf("%p \n",p);
return 0;
}