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
相关问答:
问一下:
#include <stdio.h>
int main()
{
char x, y, z;
int i;
int a[16];
for(i=0; i<=16; i++)
{
a[i] = 0;
......
//C 接口
extern "C"
{
TESSDLL_API int __cdecl GetTessText(const char *imagefile, char *text);
}
//我在C#中声明
//调用C DLL 中的函数
[DllImport("OCRapi.dll&quo ......
请问用C或C++如何编写求解3D魔方的程序,该从何开始?
谢谢各位,帮忙提点建议吧。
http://www.mofang.net/code/176/182/6581.html
我只能突破60秒!唉。
我刚过40秒
google的android中有个OpenGL ES + ......
请问各位高手如何用C/C++获得系统未安装补丁
好像很专业的东西。。。
查注册表
每个补丁如果安装了都会在注册表里面登记
请问能不能更清晰些,我想用c\c++查出来,不好意思,我是新手。还望指教。谢
分值 ......
最近在看一个用bison实现的C parser,OS是opensolaris。当用它来解析一个简单的hello.c时,出现“/usr/include/sys/va_list.h: parse error before __gnuc_va_list”。打开文件va_list.h后发现这样一行“typedef __bu ......