嵌入式软件工程师面试常见问题2

在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?

函数名: atol
功能: 把字符串转换成长整型数
函数的原型: long atol(const char *nptr);
程序例子:

 #include <stdlib.h>
#include <stdio.h>
int main(void)
{
long l;
char *str = "98765432";
l = atol(str);
printf("string = %s integer = %ld\n", str, l);
return(0);
}

对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

c用宏定义,c++用inline

软件测试都有那些种类?

黑盒:针对系统功能的测试
白盒:测试函数功能,各函数接口

确定模块的功能和模块的接口是在软件设计的那个阶段完成的?

概要设计阶段

下面代码中,请问 p1+5=? p2+5=?

 #include<stdio.h>
int main()
{
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char*)0x801000;
p2=(unsigned long*)0x810000;
printf("p1=%x\n",p1);
printf("p2=%x\n",p2);
p1=p1+5;
p2=p2+5;
printf("%d\n",sizeof(*p2));
printf("p1+5=%x\n",p1);
printf("p2+5=%x\n",p2);
}

输出结果:

p1=801000
p2=810000
8
p1+5=801005
p2+5=810028

解释:
p1=(unsigned char*)0x801000;
是给指针变量赋值,即把十六进制0x801000放到字符指针变量中,即指针变量p1的值就是0x801000
p2=(unsigned long*)0x810000;也是给指针变量赋值,同上
输出结果p1+5的值是801005,因为指针变量指向的值字符,加一表示指针向后移动一个字节,那么加5代表向后移动5个字节,所以输入801005
p5+5的值是801016,因为指针变量指向的长e799bee5baa6e78988e69d8331333262373264整形的,加一表示指针向后移动8个字节,那么加5代表向后移动20个字节,所以输入810040,(输出时十六进制)要是十进制就是810028了

请问下面程序有什么错误?

 int a[60][250][1000],i,j,k;
for(k=0;k<1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
a[i][j][k]=0;

答:
把循环语句内外换一下
(编译的时候没错,运行的时候出错,但这个数组太大,如果放在栈中,还是会
溢出,要作为全局变量)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值