一小段c代码,求解释

来源:百度知道 编辑:UC知道 时间:2024/05/14 10:51:00
#include<stdio.h>
#include<stdlib.h>
void putfloat(float num,FILE *fp){
char*s;
int count;
s = (char*)#//为什么可以这样呢,怎么把地址变成字符串数组呢
for(count = 0;count<4;count++){
fputc(s[count],fp);
}
}

上面这段代码是如何实现 向磁盘文件写一个实数呢?
如果我把char*s 改成int*s,会有什么结果呢?
fputc(a,b)的第一个参数应该是一个字符,但s[count]凭什么能够代表一个字符呢

20分,谢谢

如果s是指针,s[count]就是*(s+count)
C语言就是这样设计的,指针和数组的关系就是这样的

任何数据都是按字节顺序存储的,C语言中的char不能仅仅理解为字符,而应该广义理解为一个字节的意思,字符串可以用char *表示,char *也能表示字节数组,后者在实际应用中也是相当普遍的

typedef unsigned char BYTE;

不论是float,还是long,string 总之都是数据
可以相互转换
该程序硬的将存储4字节float的地址解释成一个字符串的地址
然后向磁盘存入4个byte 是一种变通的办法 不过没什么用处
你可以直接这样存
fwrite((void *)&num,4,1,fp);一下就存好

s本质是一个指针,其中所存的内容就应该是地址,将num的首地址赋值给s指针,一个float类型的数占空间4个字节;一个字符,即char,占1个字节,所以count循环到4,这个例子是使用字符流写文件,读出的时候也是一个一个字符读出来,再组合成相应数据类型
这么说明白吗?

不论是float,还是long,string 总之都是数据