应聘嵌入式工程师,C语言是笔试中必考的部分,有的甚至会占试题的80%以上。现将部分试题与大家分,希望对大家有所帮助。
1、请填写bool , float, 指针变量与“零值”比较的if语句。
提示:这里“零值”可以是0,0.0 , FALSE 或者“空指针”
。例如int 变量n 与“零值”比较的if 语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。
(1)请写出bool flag 与“零值”比较的if 语句:
(2)请写出float x 与“零值”比较的if 语句:
(3)请写出char *p 与“零值”比较的if 语句
2、以下为Linux下的32 位C 程序,请计算sizeof 的值。
(1)void Func ( char str[100])
{
…… ;
}
请计算sizeof( str ) =
(2)void * p = malloc( 100 ); 3、用变量a 给出下面的定义
e) 一个有10个指针的数组,该指针是指向一个整型数的;
f) 一个指向有10个整型数数组的指针;
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数; 数组、指针、内存、结构体常考点
5.void getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p,“hello world”);
}
int main( )
{
char *str=NULL;
getmemory(str);
printf(“%s/n”,str);
free(str);
return 0;
} 会出现什么问题? 4、(void *)ptr 和(*(void**))ptr 的结果是否相同?其中ptr为同一个指针。 5、要对绝对地址0x100000赋值,我们可以用
(unsigned int*)0x100000 = 1234;
那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做? 6、#include<stdio.h>
char *fun(void)
{
char p[]="ni hao!";
return p;
}
int main()
{
char *pt=NULL;
pt = fun();
printf(pt);
}
运行时有什么结果? 7、#include <stdio.h>
#include <string.h>
void fun(char **p, int num)
{
*p = (char *)malloc(num);
}
int main()
{
char *str = NULL;
fun(&str, 100);
strcpy(str, "hello world!\n");
printf(str);
}
运行结果怎样? 有什么问题? 8、关键字volatile有什么含意? 并给出三个不同的例子。
|