zoukankan      html  css  js  c++  java
  • c语言之指针疑难问题

    编译器Visual C++ 6.0

    1.

    #include <stdio.h>
    
    int main()
    {
        int i = 10;
        char *p = (char *)(0x0018FF44);
        *p = NULL;return 0;
    }

    说明:0x0018FF44是i的地址;

    运行完后,p 的值为0x0018FF44;         *p的值为0;

     2.

    #include <stdio.h>
    int main()
    {
        //int i = 10;
        char *p = (char *)(0x0018FF44);
        *p = NULL;
    return 0; }

    只是注释变量i

    运行完后,p 的值为0x0018FF00;         *p的值为0;

    3.

    #include <stdio.h>
    
    int main()
    {
        int i = 10;
        int *p = (int *)(0x0018FF44);
        *p = NULL;
    
        return 0;
    }

    p的类型修改为int *;

    运行完后,p的值为0x0018FF44;          *p的值为0;

    4. 

    #include <stdio.h>
    
    int main()
    {
        //int i = 10;
        int *p = (int *)(0x0018FF44);
        *p = NULL;
    
        return 0;
    }

    仅仅将i注释掉

    运行完后,p的值为变为0x00000000;*p的值未知;

    问题:

    1.为什么变量I注释前后的结果不同?

    2.为什么对于*p赋值,指针变量p的值也变化了?

    3.为什么对于char*类型的指针,修改的是内存地址的低地址?

  • 相关阅读:
    网页导出PDF文件
    图片翻转导航
    瀑布流之ajax
    楼梯效果
    数码时钟
    数字字母随机验证码
    kafka shell
    zookeeper shell
    正则
    Linux(一)
  • 原文地址:https://www.cnblogs.com/weiyouqing/p/12890881.html
Copyright © 2011-2022 走看看