| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 908 人关注过本帖
标题:求指点,关于负值语句,和指针问题!!
只看楼主 加入收藏
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
求指点,关于负值语句,和指针问题!!
例如
int a;
a=3;
对内存是如何操作的?
还有为什么说使用指针可以提高程序的效率那定义指针变量不也占内存吗?
搜索更多相关主题的帖子: 内存 如何 
2012-02-16 14:31
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:0 
这个百度就可以了吧,比在论坛上得到的答案更详细

我的地盘
2012-02-16 15:07
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
收藏
得分:0 
指针提高是因为直接进行内存地址的调用咯。。。亲

数学好难!
2012-02-16 23:29
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:8 
指针占4个字节

struct tagStudent
{
  char name[256];
  char sex;
  int weight;
.........
}
比喻 fun(struct tagStudent * p)和 fun(struct tagStudent p);
你觉得第一种和第二中那种效率要高呢!!

我们直接从我们看
第一个函数创建 一个指向struct tagStudent 的指针 只要4个字节
第二个函数创建 一个 struct tagStudent 的结构体 系统要到内存找出这样大小的内存空间
你说那个效率高一点。
(我说的比较直观但不专业的说话  但可以好看一点)
指针是直接操作内存地址 我们处理数据都是内存空间的数据做出处理 我们跟内存地址有很大关系。
所以当处理数据的时候直接处理内存地址要快一些 。。。。。

int a; 在内存里面找到一块 sizeof(int)大小的内存
然后把3放到找到的内存中去

[ 本帖最后由 小鱼儿c 于 2012-2-17 00:24 编辑 ]

用心做一件事情就这么简单
2012-02-17 00:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
想當然

授人以渔,不授人以鱼。
2012-02-17 00:47
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
以下是引用TonyDeng在2012-2-17 00:47:40的发言:

想當然
虽然是想当然。
不过也有一定道理,
呵呵

用心做一件事情就这么简单
2012-02-17 01:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:12 
指針是間接尋訪手段,計算機要尋訪*p的數據,要做兩步動作,第一步先到p的地址讀取地址值,然後根據指示再跳轉到對應的地址,才能找到實體數據,這是兩個步驟。而直接用變量名尋址,是一步到位的。哪個效率高,不是看數據長度,而是看操作都做了什麼。對值數據類型,指針無論如何都沒有直接尋址快,只有對引用數據類型,才顯出靈活的優勢,但那仍然不是指速度效率高,因為凡是指針解引用,都必須有如上兩個步驟。指針的效率,只是迴避了複製過程中的讀、寫、擦除動作,而僅僅調換標籤(即對作為值數據類型的指針變量進行讀、寫、擦除動作而非對引用數據實體),但實際的動作,並不僅僅是那麼簡單的。採取什麼方式,是看實際情況和需求的,不是看見“指針”兩字就高效的。

[ 本帖最后由 TonyDeng 于 2012-2-17 01:51 编辑 ]

授人以渔,不授人以鱼。
2012-02-17 01:48
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
回复 7楼 TonyDeng
谢谢你们,那如果我写
int a[1000];int *p = a;p++;来进行操作访问一个数组指针变量优势应该可以体现出来,但我就是纠结四个字节的指针变量如何能指向1000个整形数据呢?难道a[1000]内存都是连续分布的吗?

Stay hungry , Stay foolish!
2012-02-17 07:57
smallmoon521
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:517
专家分:1373
注 册:2008-4-21
收藏
得分:0 
小鱼儿c其实说的也对, TonyDeng 更是说到关键处了
指针的优势在与省去了内存申请与释放的时间,而这两处是很耗时的

int a[1000];是数组,内存当然是连续的

为游戏狂~~!!    大家努力编哈!
2012-02-17 09:02
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:0 
回复 8楼 清微御宇
不连续的那是链表   
一般也是指针访问啊

不管怎么走、总有一个终点...
2012-02-17 09:15
快速回复:求指点,关于负值语句,和指针问题!!
数据加载中...
 
   



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

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