欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从零开始的指针运用1

程序员文章站 2024-02-29 18:28:16
...

从零开始的指针运用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;
}