联发科深圳公司嵌入式软件工程师笔试题目

联发科深圳公司嵌入式软件工程师笔试题目

1.求输出结果

#define pi 3.14
#define Area(R) pi*R*R
main()
{
 int r1=5,r2=2;
 double s=0;
 s=Area(r1-r2);
 printf("The area is %f",s);
}

答:考察define的替换,s=3.14X5-2X5-2=15.7-12=3.700000

2.函数 int compare(int a,int b),定义为该函数的函数指针

答: P:为 int(*p)(int,int);p= compare;

3.求输出结果

#include
void sub(char*s,int num)
{
 int i ,j=num;
 char t;
 while(j-->1)
 {
   for(i=0;i 
  

答:程序崩溃

4.交换两个变量的值,不使用第三个变量,即a=3,b=5交换后b=3,a=5

int a=3,b=5;
a=a^b;
b=a^b;
a=a^b
此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。即:a^b^b=a。将a=a^b代入b=a^b则得b=a^b^b=a;同理可以得到a=b^a^a=b;轻松完成交换。

5.内存分配相关的考量

 #define N 100
 void GetMemory1(char*p)
 {
   p=(char*)malloc(sizeof(char)*N);
   strcpy(p,"Have a good day!");
 }
 
 char*GetMemory2(void)
 {
   char p[]="Have a good day!";
   return p;
 }
 
 void main(void)
 {
  char*str1=NULL,*str2=NULL;
  GetMemory1(str1);
  GetMemory2(str2);
  printf("\nstr1:%s",str1);
   printf("\nstr2:%s",str2);
 }

结果为:str1:NULL,str2: 乱码。 str1为什么是NULL? 内动态分配函数参考的内存,在函数执行完成后是否会自动释放,是否是因为此原因?str2返回乱码,是因为p是一个局部变量,在函数执行完成后,p已经指向未知的地方,所以显示乱码.

你可能感兴趣的:(联发科深圳公司嵌入式软件工程师笔试题目)