-seventy-
Welcome to my blog space.
posts - 75,comments - 0,views - 505

指针概念与定义指针

复制代码
/*
    指针的概念:
        1.为了方便访问内存中的内容,给每一个内存单元,进行编号,
        那么我们称这个编号为地址,也就是指针。

        2.指针也是一种数据类型,指针变量有自己的内存,
        里面存储的是地址,也就是那些编号。

    四要素
        1.指针本身的类型    例如:float*    int*    ...
        2.指针指向的类型    例如:float        int        ...
        3.指针本身的内存
        4.指针指向的内存

    运算符
        *:
        1.定义指针时,通过 * 符号,来表示定义的是一个指针,并且是指针自身的类型的组成部分
        2.其他时候,表示解析引用(取内容:通过内存编号,读取内存中的内容)

        &:取(首)地址符,作用:取出(内存的)首地址
*/

# include <stdio.h>

int main()
{
    // 定义指针(指针:pointer)
    float* p_name;    // 指针本身的类型:float*    指针指向的类型:float
    int * p1;
    int *p2;        // * 符号偏不偏移不影响其功能

    return 0;
}
复制代码

指针的初始化与赋值

复制代码
/*
    知识储备:
        // 初识化:定义的同时,给值
        int a = 0;

        // 赋值:先定义,再给值
        int b;
        b = 0;
*/

# include <stdio.h>

int main()
{    
    // 初始化
    int num = 6;
    int val = 8;
    
    // 初始化
    int* p1 = &num;    // 对于指针变量p1,如果进行给值,必须给地址(内存编号)

    // 赋值
    int* p2;
    p2 = &val;


    // 自行体会
    int* p3 = p1;
    

    // 直接存入地址(不推荐使用,因为你不知道自己随便写的地址里面是什么!!)
    int* p4 = (int*)123456;    // 将 整型123456 强转为 int*类型 的“地址”
    int* p5 = (int*)0XAB25;    // 计算机中的内存地址通常用16进制数表示


    // 直接使用地址:置空(即:"使用0地址,NULL:0X0")
    int* p6 = NULL;    // 等价于 int* p6 = (int*)0X0;
    // 目的:为了给暂无指向的指针,提供指向,保证安全,将内存中的0地址特殊化


    // 数组名就是数组的首地址
    int arr[3] = { 1, 2, 3 };
    // 数组类型:int [3]
    // 元素类型:int
    // arr 类型:int*
    int* p7 = arr;


    return 0;
}
复制代码

探究内存

复制代码
/*
    1.变量在内存中所占的字节数
    所有的指针变量,不论类型,在内存中所占的字节数都是一样的,都是4个字节(或者8个字节)
    (8个字节是因为时代的发展,部分好的计算机性能得到提升,一般都是4个字节)

    2.指针本身的内存,以及指针指向的内存
    指针本身的内存:4个字节(指针变量只需要存储,所指向的变量的首地址)
    指针指向的内存:看你所指向的类型,视情况而定
*/

# include <stdio.h>

int main()
{    
    double num = 12.0;
    double* p1 = &num;
    printf("%f \n", num);
    printf("%f \n", *p1);    // 利用指针,取得 num 的值

    return 0;
}
复制代码

 指针的偏移

 大端模式和小端模式

  点击前往学习

posted on   -seventy-  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示