前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搜罗的面试题总结(一)

搜罗的面试题总结(一)

作者头像
用户5908113
发布2020-04-21 16:21:59
6210
发布2020-04-21 16:21:59
举报
文章被收录于专栏:Pou光明Pou光明

直奔主题:

1. 引用与指针的区别

引用是变量的别名,在使用上与原变量完全一样。

1>引用使用时要求:

①引用在创建时必须初始化 ——指针可以在任何时候初始化

②引用一旦创建就不能再更改引用关系 ——指针还可以指向其他对象

③引用不能为NULL

2>指针需要单独分配空间,引用不会单独分配空间。具体:

char *p = (char *)malloc(100);

int ip[10];

sizeof(指针) 32位系统是4字节

sizeof(ip) 40

sizeof()作用:是C/C++的一个操作符,返回一个对象或类型所占内存字节数。

3>作为函数参数时:

Void func(int &a); void func(int *a);

都可以对a所指向或a的引用对象进行更改,区别在于:

&a 完全没有复制过程,直接在指向对象上面操作

*a需要将对象的指针复制

2. 自己实现strcpy()

代码语言:javascript
复制
#include <stdio.h>
#include <assert.h>

char *my_strcpy(char *dest, const char *src)
{assert((dest != NULL) && (src  != NULL));

int i;
for (i = 0; src[i] != '\0'; i++)
{
    dest[i] = src[i];
}
dest[i] = '\0';
return dest;
}

注意:

int a[]={1,12,23};

int *p=a;printf("%d\n",*p++);

输出 a[0]的值 1,后加加:表达式里先用原值,不自增。

3. new、delete、malloc、free联系与区别

相同点:都可以用于动态申请内存和释放内存。

不同点:

malloc/free 是C/C++的标准库函数, new/delete是C++运算符

new可以自动分配空间大小, malloc需要手动指出分配字节的大小。

malloc 返回的是void *类型,所以需要手动指出类型

new 是类型安全的, malloc 不是

int* p = new float[2]; // 编译时指出错误 类型不匹配 int* p = malloc(2*sizeof(float)); // 编译时无法指出错误 强制转换类型

Obj *objects = new Obj[100]; //不能写成有参构造 Obj *objects = new Obj[100](1); ×

Delete []objects ;

4. 某32位系统下,默认4字节对齐,使用sizeof()进行计算:

char str[] = “12345”;

char *p = str;

int n = 10;

5. 求函数返回值, 输入x = 107 和 x = 1571, 并说明返回值含义

int func(int x)

{

int count = 0;

while(x)

{

count++;

x = x & (x-1);

}

return count;

}

将x转为二进制,查看1的个数。

6. sizeof 与 strlen的区别

sizeof是C/C++中的运算符,作用是返回对象或类型在内存中所占字节数。

strlen是C语言中的库函数,用来计算字符串长度,直到空结束字符,但不包括空结束字符。

所在头文件为#include <string.h>其函数原型为unsigned int strlen(char *s); 其 中s为指定的字符串。

7. 在C++程序中调用被C编译器编译后的函数,为什么要加 extern “C” ?

告诉编译器该部分语法按照C语言语法编译

8. 一个类有基类、内部有一个其他类的成员对象,请问该子类、基类、和内部类的成员对象的构造函数执行顺序?

先调用基类构造函数、再调用其他类成员构造函数、最后调用自己类的构造函数。

先构造、后析构。

9. 写一个标准宏,该宏输入两个参数,并返回较小的一个。

10. 一个由C/C++编译程序占用内存分为以下几个部分

1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量值

等。其操作方式类似于数据结构中栈。

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中堆是两回事,分配方式倒是类似于链表。

3、全局区(静态区)(static)—,全局变量和静态变量存储是放在一块,初始化全局变量和静态变量在一块区域, 未初始化全局变量和未初始化静态变量在相邻另一块区域。- 程序结束后由系统释放。–>分别是data区,bbs区

4、文字常量区 —常量字符串就是放在这里。程序结束后由系统释放–>coment区

5、程序代码区—存放函数体二进制代码。–>code区

深度探索C++对象模型: sizeof(空类) 为何是1 ?

那是被编译器插进去的一个char ,使得这个class的不问同实体(答object)在内存中配置独一无二的内地址。容也就是说这个char是用来标识类的不同对象的

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

本文分享自 Pou光明 微信公众号,前往查看

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

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

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