前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C/C++面试例题讲解

C/C++面试例题讲解

作者头像
跋扈洋
发布2022-03-29 08:45:38
2430
发布2022-03-29 08:45:38
举报
文章被收录于专栏:物联网知识
  1. include “filename.h”’和include <filename.h>有什么区别? “filename.h”是从本项目里搜索filename.h,<filename.h> 是从标准库里搜索filename.h文件
  2. “静态全局变量”和“非静态全局变量”有什么区别?“静态局部变量”和“非静态局部变量”有什么区别?“静态函数”和“非静态函数”有什么区别? 静态全局变量只在本文件中定义,其他文件不能引用. 局部变量所在函数每次调用的时候都会被重新分配存储空间,函数结束后,就会回收该存储空间。静态局部变量不会,始终保持当前值。
  3. calloc 和 malloc 有什么区别?

calloc在动态分配完内存后,将内存空间置为零。malloc不初始化,里边数据是随机的脏数据。

  1. 在以下代码中,当构造 GuidedMissile 类型的对象时,以下哪个构造函数调用顺序是正确的? class Object {}; class Projectile : public virtual Object {}; class Guider : public virtual Object {}; class Rocket :public Object {}; class GuidedProjectile : public Projectile, public Guider {}; class GuidedMissile : public GuidedProjectile, public Rocket {}; Choices: a)Object, Projectile, Guider, Rocket, GuidedProjectile, GuidedMissile b)Object, Projectile, Object, Guider, Object, Rocket, Object, GuidedProjectile, Projectile, Guider, GuidedProjectile, Rocket, GuidedMissile c)Object, Object, Object, Projectile, Guider, Rocket, Projectile, Guider, GuidedProjectile, Projectile, Rocket, GuidedProjectile, Rocket, GuidedMissile d)Object, Projectile, Guider, GuidedProjectile, Object, Rocket, GuidedMissile a
  2. 请按时间复杂度对以下排序方法进行分类 a) 快速排序;b) 冒泡排序;c) 归并排序;d) 堆排序;e) 插入排序

O(n^2):b、e O(n*logn):a、c、d

  1. *int a[8]; /assume sizeof(int) = 4/ int b; 如何将数据复制到动态数组b? 填以下空白? b = malloc(①); sizeof(a) --> ② sizeof(b) --> ③

①: sizeof(int)*8 ; ② 32字节 ; ③ 32字节 ;

  1. #define sum(a, b) a + b 好吗?如果不是,如何纠正? 可以改为#define sum(a, b) ((a)+(b))
  2. 给出变量“a”的以下定义 a) An integer b) A pointer to an integer c) A pointer to a pointer to an integer d) An array of 10 integers e) An array of 10 pointers to integer f) A pointer to an array of 10 integers g) A pointer to a function that takes an integer as an argument and returns an integer h) An array of ten pointers to functions that take an integer argument and return an integer a) int a; b) int *a; c) int **a; d) int a[10]; e) int *a[10]; f) int (*a)[10]; g) int (*a)(int); h) int (*a[10])(int);
  3. 以下函数的输出是什么?为什么? void foo(void) { unsigned int a = 6; int b = -20; (a+b > 6) ? puts("> 6") : puts("<= 6"); } 应该是>6,因为表达式中存在有符号类型和无符号类型,所有的数都自动转换为无符号类型。因此-20的代表的不再是负数,而是一个很大的数字,所以结果也变为很大的数。
  4. *假设:在4、32bit平台 struct BBB { long num; char name; short int data; char ha; short ba[5]; }p; p = 0x10000; p + 0x100 =0x11400; (Ulong)p + 0x100 = 0x10100; (char)p + 0x100 = 0x10100;
  5. 读C程序
代码语言:javascript
复制
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
代码语言:javascript
复制
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
代码语言:javascript
复制
Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
代码语言:javascript
复制
void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}

上面运行测试功能时的每个结果是什么。

1.会崩溃。 2.乱码 3.能够输出hello 4.str的动态内存已经被释放

  1. C 编程 实现一个函数“revstr()”,不允许使用任何C标准库函数,定义函数原型,返回输入字符串的反转。
代码语言:javascript
复制
char *revstr(char *str, size_t len)
{
    char    *start = str;
    char    *end = str + len - 1;
    char    ch;
    if (str != NULL)
    {
        while (start < end)
        {
       ch = start;
end=ch;
start=end;
       *start++;
*end--;     
   }
 }
    return str;
}

这里知识帮大家总结一下,有什么错误的地方欢迎指正。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 物联网知识 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档