导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[xwmlz]嵌入式研发工程师面试试题大全(ANSI 



No.46815
作者:xwmlz
邮件:liuzhu@re-er.com.cn
ID:103464
登陆:54次
文章数:68篇
最后登陆IP:222.210.192.17
最后登陆:2009/8/19 9:28:31
注册:2008/3/6 16:40:54
财富:639
发帖时间:2008/5/27 15:14:48
发贴者IP:222.209.221.234
标题:xwmlz:嵌入式研发工程师面试试题大全(ANSI CC++方面的知识 )[原创]
摘要:No.46815嵌入式研发工程师面试试题大全(ANSI CC++方面的知识 )[原创] 嵌入式研发工程师面试试题大全(ANSI CC++方面的知识 )
一.ANSI C/C++方面的知识 
1、简答题。 

1、 如何在C中初始化一个字符数组。 

逐个字符赋值:char s[] = {‘A’,’B’,’C’,’D’};

字符串赋值:char s[] = {“ABCD”};

对于二维字符数组:char s[2][10] = {“cheng”,”jinzhou”};


2、 如何在C中为一个数组分配空间。 

如果是栈的形式,Type s[N]定义后系统自动分配空间,分配的空间大小受操作系统限制;

若是堆的形式,Type *s;  s = (Type *)malloc(sizeof(Type) * N);  分配的空间大小不受操作系统限制。


3、 如何初始化一个指针数组。 

这里有必要重新对比一下指针数组与数组指针的差异。

a. 指针数组:数组里存储的是指针。

如:int * s[ 5 ] 表示数组s里存储了5个指向整型的指针。

          Char * s[ 3 ] = {“aaaaa”,”bbb”,”ccccc”}  表示数组s里存储3个指向字符型的指针,分别指向字符串aaaaa、bbb、ccccc。

b. 数组指针:其实就是数组,里面存放的是数据。

如:int ( * s )[ 5 ] 表示数组s里存储了5个整型数据。


4、 如何定义一个有10个元素的整数型指针数组。 

Int * s [ 10 ];


5、 s[10]的另外一种表达方式是什么。 

* ( s + 10 )

二维数组S [ 5 ][ 8 ]的表示方法:*( *(s + 5) + 8 )


7、 要使用CHAR_BIT需要包含哪个头文件。 

Include limits.h

在该头文件里 #define CHAR_BIT  8


8、 对(-1.2345)取整是多少?   -1


9、 如何让局部变量具有全局生命期。 

使用Static,局部变量就存储在全局区(静态区),便具有全局的生命期和局部的访问控制。


10、C中的常量字符串应在何时定义? 

没有理解到题目的意思,我只是想说明一点,定义常量字符串后它属于const型,不能去修改它,否则程序出错。


11、如何在两个.c文件中引用对方的变量。 

尚不清楚,望博友能告知,万分感谢!


12、使用malloc之前需要做什么准备工作。 

定义一个指针后就可以malloc了。


13、realloc函数在使用上要注意什么问题。 

Realloc后返回的指针与之前malloc返回的指针指向的地址不同。


14、strtok函数在使用上要注意什么问题。 

首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL


15、gets函数在使用上要注意什么问题。

这里要将Scanf( )、gets( )放在一起比较。Scanf( )是遇到空格就判断为输入结束,而gets( )则遇到回车才判断为输入结束。


16、C语言的词法分析在长度规则方面采用的是什么策略? 

尚不清楚,望博友能告知,万分感谢!


17、a+++++b所表示的是什么意思?有什么问题? 

根据自增运算符的右结合性,它是(a++)+(++b)的意思,但有的编译器里省略括号就不能通过,同时也降低了程序可读性。


18、如何定义Bool变量的TRUE和FALSE的值。 

#define TRUE 1

#define FALSE 0


19、C语言的const的含义是什么。在定义常量时,为什么推荐使用const,而不是#define。 

Const是只读的意思,它限定一个变量不允许被改变。

#define缺乏类型检测机制,在预处理时候有可能引发错误。

Const方面的其它知识扩展:

         问题1:const变量 & const 限定的内容

下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢?

  typedef char * pStr;

  char string[4] = "abc";

  const char *p1 = string;  // *p1 作为整体不能被修改,但p1可以修改,p1++合法

  const pStr p2 = string;  //p2作为一个整体,不能被修改,但是下面的p2++非法修改

  p1++;

  p2++;

     

问题2:const变量 & 字符串常量

请问下面的代码有什么问题?

char *p = "i''''m hungry!";  //定义的是字符串常量
  p[0]= ''''I''  //不能修改字符串常量
  

问题:const变量 & 字符串常量2

  char a[3] = "abc" 合法吗?使用它有什么隐患?

没有考虑到字符串结束符‘\0’,所以会产生意想不到的错误。

  比如以下程序:

int main()

{

       int i;

    char p[6] = {''''a'''',''''b'''',''''c'''',''''d'''',''''e'''',''''f''''};

    printf("%s",p);

    while(1);

    return 0;

}

运行后显示: abcdef@

问题3:const & 指针

类型声明中const用来修饰一个常量,有如下两种写法,那么,请问,下面分别用const限定不可变的内容是什么?    

1)、const在前面

a. const int nvalue; //nvalue是const

把类型int撇开,变量nvalue作为一个整体,因此 nvalue是const型;

b. const char *pContent; //*pContent是const, pContent可变

把类型char撇开,变量 *pContent作为一个整体,因此 *pContent是const型;
c. const (char *) pContent;//pContent是cons ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:78531毫秒 查询6次