指针的越界崩溃

#include <stdio.h>

void test()
{
    printf("输出了内容\n");
}

int main(void)
{
    test();

    int number = 10;

    // 定义指针的方式: 需要指向的类型 *指针的名称 = 0;
    int* point = 0;        // 这个写法是定义指针并且指向地址 0(空指针)

    // 为指针赋值: [应该]使用对应指针类型的变量地址赋值给指针
    point = &number;

    // 使用指针: 自己的地址&point + 指向的地址 point + 指向的地址上保存的内容 *point
    printf("%p %p %d\n", &point, point, *point);

    char chr = 'a';        // 97 0x61
    point = (int*)&chr;

    // 访问到的数据是字符所占的1字节 + 紧随的后3字节
    printf("*point = %x\n", *point);

    // 修改到的数据是字符所占的1字节 + 紧随的后3字节
    // 产生了越界的修改,会导致程序的崩溃
    *point = 200;
    printf("*point = %x\n", *point);


    return 0;
}

 

posted @ 2020-02-24 20:39  冫恋丶  阅读(327)  评论(0编辑  收藏  举报