设为首页 加入收藏

TOP

认识指针保存变量地址(二)
2013-05-14 09:25:38 来源: 作者: 【 】 浏览:594
Tags:认识 指针 保存 变量 地址

    声明后,未进行任何操作:
    [cpp]
    int *p;
    printf("&p = %x,p = %x, *p = %d\n", &p, p, *p);
    // &p = 0022ff44,p = 768d9e34, *p = -7494423
    //此时,p是一个野指针,其值是系统任意赋的。p和*p都是没有实际意义的。
 
指针赋值为空:
[cpp]  
        p = (int *)NULL; //NULL的值为0   
        printf("&p = %x,p = %x\n", &p, p);  
        // &p = 22ff44,p = 0 , *p没有意义   
这里,因为系统分配给每个程序一定的内存空间,程序不可访问未分配给自己的内存。
 
P指向一个有意义的数值:
 
[cpp]  
int a = 2;  
p = &a;  
*p = NULL;   
printf("p = %x,&a = %x, *p = %d, a = %d\n", p, &a, *p, a);  
// p = 0022ff40, &a = 0022ff40, *p = 0, a = 0           
  
*p = 8;  
printf("p = %x,&a = %x, *p = %d, a = %d\n", p, &a, *p, a);   
// p = 0022ff40, &a = 0022ff40, *p = 8, a = 8  
将数据存储到指定的内存地址(略显暴力):
[cpp]  
<span style="white-space:pre">  </span>//int a = 1;  
        //printf("&a = %x\n", &a);  
        p = (int *)0x22ff40;   //p指向地址 0x22ff40  
        *((int *)2293568) = 10;  //在该内存上填值   
        printf("p = %x, *P = %d\n", p, *p);  
        // p = 22ff40, *p = 10  
这里先打印出a的地址,为0x22ff40,表明这个地址可用,再赋值给指针p。

        

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇问题解决最佳方法:排序 下一篇背包问题的空间优化

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: