这段代码大家能分析出哪些东西 深入探讨

N_E_M_O_C艹 2011-12-06 04:46:48
#include<stdio.h>

typedef unsigned char *int_point;

void show_byte(int_point a,int length)
{
int i;
for(i = 0;i < length;i++)
printf("%2.2x",a[i]);
printf("\n");
}


void show_float(float &x)
{
show_byte((int_point)&x,sizeof(x));
}

void show_int(int &x)
{
show_byte((int_point)&x,sizeof(int));
}

void show_point(void *x)
{
show_byte((int_point)&x,sizeof(void *));
}


void main()
{
float a=3.1415;
int b = 0x1234567;
int *c = &b;
show_float(a);
show_int(b);
show_point(c);
}
...全文
131 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dayu1203 2011-12-06
  • 打赏
  • 举报
回复
比如:
volatile的变量说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。就是说,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
N_E_M_O_C艹 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dayu1203 的回复:]
int_point 是typedeof型 char*指针
[/Quote]
我的意思是解引用的时候,编译器知道这个指针的类型,这个“类型”在计算机中是以怎样的形式存在的
dayu1203 2011-12-06
  • 打赏
  • 举报
回复
int_point 是typedeof型 char*指针
N_E_M_O_C艹 2011-12-06
  • 打赏
  • 举报
回复
如果把void show_float(float &x)
{
show_byte((int_point)&x,sizeof(x));
}
改成
void show_float(float x)
{
show_byte((int_point)&x,sizeof(x));
}
在传递分别给这两个个函数实参的时候,内存是怎么发生变化的?
void show_float(float x)产生一个局部的x,来接收实参,他在栈上,
show_byte((int_point)&x,sizeof(x));里对x强制转换的时候,他的类型变为为int_point,这个类型是在计算机中是怎么存储的? 当再引用x的时候计算机怎么知道他的类型是int_point??
robin97 2011-12-06
  • 打赏
  • 举报
回复
这个…………
收费才能告诉你了。
N_E_M_O_C艹 2011-12-06
  • 打赏
  • 举报
回复
希望能从里头挖掘一些计算机细节的东西,甚至到汇编到微机原理相关的东西,程序只是一个引子
N_E_M_O_C艹 2011-12-06
  • 打赏
  • 举报
回复
我想明白虚拟存储器 的真正概念
N_E_M_O_C艹 2011-12-06
  • 打赏
  • 举报
回复
我提一个:这里输出的是倒序的,说明了小端存储的概念
selooloo 2011-12-06
  • 打赏
  • 举报
回复
就是打印下内存存储形式,好象和操作系统没啥关系吧。这里用了C++的引用,不是很地道的C代码了
N_E_M_O_C艹 2011-12-06
  • 打赏
  • 举报
回复
希望能挖掘出很多操作系统的概念

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧