易截截图软件、单文件、免安装、纯绿色、仅160KB

C 程序问题 (三) - C/C++ / C语言

问题一:
在对齐为4的情况下
struct BBB
{
long num;
char *name;
short int data;
char ha;
short ba[5];
}*p;
p=0x1000000;
p+0x200=____;
(Ulong)p+0x200=____;
(char*)p+0x200=____;
假设在32位CPU上,
sizeof(long) = 4 bytes
sizeof(char *) = 4 bytes
sizeof(short int) = sizeof(short) = 2 bytes
sizeof(char) = 1 bytes

问题二:
代码:
void print_array()
{
int num_array[5] = {5,7,2,3,9};
a = num_array;
int i = 0;

while(i<5)
{
printf("%d\n", *a++);
i++;
}
i = 0;
while(i<5)
{
printf("%d\n", *(a+i));
i++;
}

};
结果:(打印出)
5
7
2
3
9
1245056
4198676
1244940
2367460
1243068
问题:为什么当i=0,1,2,3,4的时候,*(a+i)和*a++(连续循环5次)结果不一致呢?原因在哪里呢?请高手指点。谢谢!!!
不好意思,各位。
a = num_array; 写错了
应该是 int *a = num_array;

问题二:
i = 0; 
a = num_array; // 加上这一行结果就一致了
while(i <5) 

printf("%d\n", *(a+i));

问题二: *a++那个循环之后,a已经被移动到num_array的后边去了

问题一:
(Ulong)p+0x200= 0x1000200; p被转换成整数,所以按照整数做加法
(char*)p+0x200= 0x1000200; p被转换成char指针,sizeof(char)是1

p+0x200= (unsigned long)0x100000


相关问答:

能用C/C++简单实现五子棋程序吗?

最近突然想自己来实现一个五子棋程序,但不知道怎么开始,自己也没学画图形函数,能在控制台下直接写吗>>>?????
控制台?比图形界面更麻烦。
http://search.download.csdn.net/search/%E4%BA%94%E5%AD%90% ......

如何查找系统未安装补丁C - C/C++ / 新手乐园

请问各位高手如何用C/C++获得系统未安装补丁
好像很专业的东西。。。

查注册表
每个补丁如果安装了都会在注册表里面登记

请问能不能更清晰些,我想用c\c++查出来,不好意思,我是新手。还望指教。谢

分值 ......

linux环境下gethostbyname函数问题 - C/C++ / C语言

写了个测试程序如下
   
  struct hostent *hp; 
char AlarmDevIP[20];  
  int x2;

hp = gethostbyname("www.google.com");
if (hp)
{ ......

c#控制Mysql 实现自动删除功能 - .NET技术 / C#

有个winform程序,使用c#+mysql,需要在一个窗体设置mysql自动删除功能,包括自动删除多少天之前的数据以及是否开启自动删除功能,我程序退出后,还怎么控制Mysql自己删除啊?是不是要用mysql的event来实现?c#可以调用mysq ......

VC++ 中的&符号 对应的是Delphi中的哪个符号??

VC++ 中, &变量名。 是什么意思。 Delphi中 和他一样的符号 是哪个、?

大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号