| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1582 人关注过本帖
标题:[求助]放大因子
只看楼主 加入收藏
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
结帖率:100%
收藏
 问题点数:0 回复次数:8 
[求助]放大因子
今天遇到一个叫放大因子的词,我不知道应该叫内存放大因子还是指针放大因子,感觉指针放大因子对些。
请问放大因子是怎么来的?我仅了解不同数据类型的放大因子等于一个该数据类型的变量所占用的内存单元数,那么它跟“步长”什么关系啊?有区别的么?

[此贴子已经被作者于2006-8-22 21:38:46编辑过]

搜索更多相关主题的帖子: 内存 变量 指针 步长 
2006-08-22 21:30
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-22 23:18
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

论坛里下载的《C语言技术文章》里面有篇《C语言函数中利用指针引用可变参数的方法

里的一道变参函数里看到:

inputpict(char *format,…)
{
char ff,str[256];
void *p; /*此无类型指针可指向任意类型的变量p */
p=*(&format+1);/*这一语句的无类型指针p取的是format的地址加1的内容,这与前面的说明堆栈内指针地址应加2(小系统编译模式)不一致,原因是该指针在编译是乘上了放大因子2。经多个版本的c编译程序编译都证明在此处加1的结果才是正确的。*/

getspict(*format); /*按各式输入字符串*/
ff-toupper(*format); /*取须返回变量类型*/
switch(ff)
{
case 'I':{
int *a;
a=p;
*a=atoi(str);
break; /*返回整型变量处理*/
}
case 'L':{
long *a;
a=p;
*a=atol(str);
break; /*返回长整型变量处理*/
}
case 'F':{
float *a;
a=p;
*a=(float)atof(str);
break; /*返回浮点数处理*/
}
case 'D':{
double *a;
a=p;
*a=atof(str);
break; /*返回双精度浮点数处理*/
}
case 'C':{
char *a;
a=p;
strcpy(a,str);
break; /*返回字符串处理*/
}
default:
error("Error!"); /*用户自定义出错时的信息*/
}
return;
}


[此贴子已经被作者于2006-8-23 9:40:45编辑过]

2006-08-23 09:17
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

指针和整数可进行加、减运算。设p是指向某一数组元素的指针, 开始时指向数组的第0号元素, 设n为一整数, 则 p+n 就表示指向数组的第n号元素(下标为n的元素)。 不论指针变量指向何种数据类型, 指针和整数进行加、减运算时, 编译程序总根据所指对象的数据长度对n放大, 在一般微机上, char放大因子为1, int、 short放大因子为2, long和float放大因子为4, double放大因子为8。

这不就是指针移动一步的字节数么?我应该没错吧,有点不肯定,怎么有个“步长”的说法后又有个“放大因子”?

[此贴子已经被作者于2006-8-23 11:28:07编辑过]

2006-08-23 09:56
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-23 10:35
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 

http://www.bc-cn.net/Soft/kfyy/c/200603/283.html 第 12篇 C语言函数中利用指针引用可变参数的方法

顺道问下您知道 WINDOWS里的Application Data(隐藏的)转移到D盘,用什么批处理命令啊,好像还得修改注册表,我在“操作系统”里挂好久没人回答我

[此贴子已经被作者于2006-8-23 11:24:38编辑过]

2006-08-23 11:20
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-24 08:53
anthony634
Rank: 6Rank: 6
来 自:西南交大
等 级:贵宾
威 望:24
帖 子:653
专家分:10
注 册:2006-6-8
收藏
得分:0 
应该是写错了,他本意应该是ff=toupper(*format),有机会我再编译下,谢谢

[此贴子已经被作者于2006-8-24 9:28:25编辑过]


2006-08-24 09:25
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-24 10:07
快速回复:[求助]放大因子
数据加载中...
 
   



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

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