您的位置:首页 > 编程语言 > C语言/C++

C语言面试题2

2016-10-15 21:42 351 查看
6、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。   

7、设有以下说明和定义:  

  typedef union

{

long i;

int k[5];

 char c;

} DATE;  

 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<len 2;="" i++)<="" font="" style="word-wrap: break-word;">

{
t=str[i];
str[i]=str[len-i-1]; //小心一点
str[len-i-1]=t;
}
printf("%s",str);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: