• 【郝斌C ST】 指针入门


    #include <stdio.h>
    
    int main() {
        printf("Hello, World!\n");
    
        int i = 3;  
        int * p = &i;    
    printf("%d",*p); return 0; }

    指针 = 指针变量类型 + 指针变量 + 同类型变量的地址赋值

    说明

    - int i = 3  声明了一个int类型的i变量,并赋值了3这个值

    - int * p  声明了一个int指针类型 的 p指针变量,注意不是*p!!!, int * 表示这是一个int指针类型

    - &i  表示取这个i变量的地址,变量的地址也是一个值

    - int * p = &i   表示把 i变量的地址赋值给p指针变量【指针就是地址】

    - *p  表示通过存放的&i地址访问i变量存储的值,也就是说 *p == i 这个意思

    注意事项:

    - 不要把i变量直接赋值给p,两者的类型就不一样,一个是int类型的变量,一个是int指针类型的变量

    - 也不要把值直接赋值给p,原因同上

    - 当&i赋值给了p,也就是说p保存了i的地址,因此,p指向了i

    - 指针变量,是一个只能存放同类型的变量地址的地址变量

    - 指针和地址是同样的一个涵义

    - *指针变量 完全等同于 普通变量,所有 *p 的地方 都可以 替换 i,反之也可以

    指针的用途:

    - 表示复杂的数据结构

    - 快速传递数据

    - 函数的返回值可以返回多个值

    - 直接访问硬件

    - 方便的处理字符串

    - 是理解面向对象语言的基础

    总结:指针是C语言的灵魂所在!!

    指针的定义:

    - 什么是地址?

      地址是内存单元的编号

      从0开始的非负整数

      范围:4G内存 230 * 22 = 4GB - 1

    - 什么是指针?

      指针就是地址,地址就是指针

      指针变量就是存放内存单元编号的变量

      指针和指针变量是两个不同的概念

      指针的本质是一个操作受限的非负整数,可以相减操作,不可加乘除

    错误类型示范:

    #include <stdio.h>
    
    int main() {
        int * p ;
        int i = 3;  
         
        *p = i;
        printf("%d",*p);
        return 0;
    }

    声明一个int指针类型变量p 但是,不为p赋值任何的变量地址,此时的p则是一个野指针,会指向内存中任意一个内存单元

    *p = i 是把i变量的值 3 赋值给指针变量p所指向的未知内存单元变量,这个行为是非常危险的!!!

    int main() {
        int i = 3;
        int * p;
        int * q;
    
        p = &i;
        *q = p;
        printf("%d",*q);
        return 0;
    }

    - 声明int类型变量i并赋值3,声明int指针类型p和q

    - p指针变量 指向 i变量的地址

    - *q 指向 p指针变量,这是一个语法错误,*p能访问或者赋值的是一个int类型变量的值或者字面量,但是p是一个int指针类型,所以类型不匹配报错

    - 如果改成 *q = *p ,这就回到上面的错误了,q指针变量又是一个野指针,指向一个未知的内存单元,并赋值i变量

    - 如果改成 p = q, 那就是把q指针变量指向的未知内存单元,赋值给p指针变量,*q则会读取这个未知内存单位存放的值

    自学视频《郝斌C语言自学教程》 121 - 126:

    https://www.bilibili.com/video/BV1os411h77o

    C指针形象动画视频:

    https://www.bilibili.com/video/BV1MJ411D7EX

  • 相关阅读:
    文件同步工具
    截图工具
    DBF文件工具
    Oracle旗下的开源虚拟机
    远程协助工具
    切换网络IP工具
    MySQL(C#的链接姿势)
    大写URL转小写
    一个textview实现文字在图片上面的效果
    通过代码设置textview颜色
  • 原文地址:https://www.cnblogs.com/mindzone/p/12750371.html
Copyright © 2020-2023  润新知