| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1155 人关注过本帖, 1 人收藏
标题:指针与内存
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 TonyDeng 于 2013-7-18 01:56 编辑 ]

授人以渔,不授人以鱼。
2013-07-18 01:50
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
我用VC++来调试了,结果给出了以下的出错信息以及memcpy()参数的信息:
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


思考赐予新生,时间在于定义
2013-07-18 01:57
梦米奇
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2013-7-12
收藏
得分:0 
指针都是把内存解析成自己的类型,那内存是以什么形式存放数据的?
2013-07-18 09:10
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:2 
实践证明:可以把常量转化为地址给指针赋值,也可以那样赋值。问题是,你要确保你要转化的地址在操作系统允许的范围内;
下面例子是先用变量a测试出程序应用范围地址:然后找了一个附近地址赋值,证明没有错误,可以赋值:
如果你自己运行,先去掉注释,看a的地址,然后把a的地址常量替换现在int类型的常量。总之要确保地址在应用程序可用的范围内(不可用原因很多,系统用的,代码区,常量区等等,你都不知道,不可能让你任意拉出一个地址就是用)。
而且系统底层的很多赋值都是这样是实现的
程序代码:
#include  <stdio.h>
#include "string.h" 

int main()
{
    char *str=NULL;
    int *p=NULL;
//    int a;
//    printf("%p  ",&a);   测试当前程序变量可用的地址
    str=(char*)0xFA65;
    printf("%p   ", str); 

    //  p=(int*)str;
    p=(int*)0x0012FF3C;
    printf("%p   ", p); 

    memcpy(p, "123", 3);
//    *p = 12;
    printf("%d\n", *p); 


    return 0;
}


 

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-07-18 10:37
快速回复:指针与内存
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015467 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved