首页 > 编程语言 > 详细

c语言之指针疑难问题

时间:2020-05-14 19:43:50      阅读:38      评论:0      收藏:0      [点我收藏+]

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

 

c语言之指针疑难问题

原文:https://www.cnblogs.com/weiyouqing/p/12890881.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!