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*类型的指针,修改的是内存地址的低地址?

  • 相关阅读:
    Java的注释
    输入一个字符串并判断是否是对称字符串
    将数组的数据按照指定格式进行拼接并打印
    对输入的电话号码中间4位进行屏蔽
    统计输入的大小写字母个数
    svnadmin
    jenkins
    travis-ci
    metamodel
    KISSY
  • 原文地址:https://www.cnblogs.com/weiyouqing/p/12890881.html
Copyright © 2011-2022 走看看