编辑: yyy888555 | 2019-07-16 |
struct data { int cat;
DATE cow;
double dog;
} too;
DATE max;
则语句 printf("%d",sizeof(struct data)+sizeof(max));
的执行结果是:___52____ 考点:区别 struct 与union.(一般假定在
32 位机器上) 答:DATE 是一个 union, 变量公用空间. 里面最大的变量类型是 int[5], 占用
20 个字节. 所以它的大小是 20. data 是一个 struct, 每个变量分开占用空间. 依次为 int4 + DATE20 + double8 = 32. 所以结果是
20 +
32 = 52. 当然...在某些
16 位编辑器下, int 可能是
2 字节,那么结果是 int2 + DATE10 + double8 =
20
8、队列和栈有什么区别? 队列先进先出,栈后进先出
9、写出下列代码的输出内容 #include int inc(int a) { return(++a);
} int multi(int*a,int*b,int*c) { return(*c=*a**b);
} typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2) { FUNC1 p=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%dn",*arg2);
} main() { int a;
//局部变量 a 为0;
show(multi,10,&a);
return 0;
} 答:110
10、请找出下面代码中的所有错误 (题目不错,值得一看) 说明:以下代码是把一个字符串倒序,如"abcd"倒序后变为"dcba" #include"string.h" main() { char*src="hello,world";
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];
while(len--!=0) d++=s--;
printf("%s",dest);
return 0;
} 答: 方法 1:一共有
4 个错误;
int main() { char* src = "hello,world";
int len = strlen(src);
char* dest = (char*)malloc(len+1);
//要为分配一个空间 char* d = dest;
char* s = &src[len-1];
//指向最后一个字符 while( len-- !=
0 ) *d++=*s--;
*d = 0;
//尾部要加'\0' printf("%sn",dest);
free(dest);
// 使用完,应当释放空间,以免造成内存汇泄露 dest = NULL;
//防止产生野指针 return 0;
} 方法 2: (方法一需要额外的存储空间,效率不高.) 不错的想法 #include #include main() { char str[]="hello,world";
int len=strlen(str);
char t;
for(int i=0;
i