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
相关问答:
最近突然想自己来实现一个五子棋程序,但不知道怎么开始,自己也没学画图形函数,能在控制台下直接写吗>>>?????
控制台?比图形界面更麻烦。
http://search.download.csdn.net/search/%E4%BA%94%E5%AD%90% ......
请问各位高手如何用C/C++获得系统未安装补丁
好像很专业的东西。。。
查注册表
每个补丁如果安装了都会在注册表里面登记
请问能不能更清晰些,我想用c\c++查出来,不好意思,我是新手。还望指教。谢
分值 ......
写了个测试程序如下
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......
有个winform程序,使用c#+mysql,需要在一个窗体设置mysql自动删除功能,包括自动删除多少天之前的数据以及是否开启自动删除功能,我程序退出后,还怎么控制Mysql自己删除啊?是不是要用mysql的event来实现?c#可以调用mysq ......
VC++ 中, &变量名。 是什么意思。 Delphi中 和他一样的符号 是哪个、?
大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时, ......