栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 基础知识

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 基础知识

语言

**
sizeof 和 strlen的区别
一个函数的形参是数组,在函数内部调用 sizeof 和 strlen 分别得到什么答案
在主函数中对一个指向字符串的指针分别调用sizeof 和 strlen分别得到什么答案**

一、定义不同
sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组(返回数组大小)、指针(储存指针所用空间大小)、类型、对象、函数等。
strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。

int main()
{
    class A
    {
    public:
        char array[100];
        int *p;
        vector darray;
        A()
        {
            p = new int[100];
            cout << "sizeof(class A):" << sizeof(class A) << endl;
            cout << "sizeof(array):" << sizeof(array) << endl;
            cout << "sizeof(vector):" << sizeof(darray) << endl;
            cout << "sizeof(*p):" << sizeof(*p) << endl; // p 为 p[0] 这个元素的首地址
            cout << "sizeof(p):" << sizeof(p) << endl;   //
            test(array);
        }
        void test(char array[]){
            cout << "test:sizeof(array):" << sizeof(array) << endl;//数组退化成指针,因为编译是计算好了
            memset(array,'a',sizeof(char)*100);
            cout<< "array=[aaa...aaa]:"< 

输出

sizeof(class A):136
sizeof(array):100
sizeof(vector):24
sizeof(*p):4
sizeof(p):8
test:sizeof(array):8
array=[aaa...aaa]:100
array=[aa 0x00 ...aaa]:2
sizeof(A 对象):136

指针和引用的区别

相同点:

引用和指针都是地址的概念,引用是一个内存对象的别名,指针指向一个内存对象,保存了这个对象的内存地址。

区别:

1.引用不能为空,即不存在对空对象的引用,指针可以为空,指向空对象。
2.引用必须初始化,指定对哪个对象的引用,指针不需要。
3.引用初始化后不能改变,指针可以改变所指对象的值。
4.引用访问对象是直接访问,指针访问对象是间接访问。
5.引用的大小是所引用对象的大小,指针的大小,是指针本身大小,通常是4字节。
6.引用没有const,指针有const
7.引用和指针的++自增运算符意义不同。
8.引用不需要分配内存空间,指针需要。

传值和传引用和传指针的区别

值传递本质上就是传递变量。值传递过程中,实参和形参在各自的存储空间有各自不同的变量地址,形参的改变不会影响传递进来的实参值
传递指针本质上也是一种值传递。将指针指向的地址给函数的局部变量形参,函数可以通过*符号或者&符号对这个地址的数据进行操作 。 如下:
```
void f(int *p){
int p1=*p;
int &p2=*p;
}
```

switch 参数有什么限制

strcpy 与 memcpy 的区别
什么是野指针、空指针以及区别
覆盖、重载和重写的区别
模板和函数重载的区别
函数指针
static 关键字的使用
类内static 成员可以定义为 const的吗
malloc和new区别
什么是智能指针,实现原理
如何避免循环依赖
什么是多态
什么是虚函数
虚函数存放的内容
虚表指针存放的位置
构造函数可以是虚函数吗
虚构函数可以是虚函数吗
extern "c" 的作用
宏定义和内联函数的区别
条件编译
深拷贝和浅拷贝
C++ 内存管理
一个空类编译器会自动生成哪些函数
内存对齐机制
委托构造函数的优缺点

计算机网络

OSI 七层模型
输入 url 到显示界面的过程
三次握手和四次挥手
什么情况下会重传
time_wait 的作用
TCP 和 UDP 的区别
使用 TCP 和 UDP 的协议
如何使用 udp 实现可靠
GET 和 POST的区别
http 和 https 的区别
拥塞控制和流量控制的区别
如何解决粘包问题
NAT 的原理
滑动窗口机制

数据结构

map 的底层实现
vector 和 list 的区别
vector 的扩容原理
红黑树的特点
二叉搜索树、平衡二叉树和红黑树的区别
迭代器失效问题
B 树 和 B+ 树的区别
STL容器的线程安全性

操作系统

进程和线程的区别
进程间通信的方式
进程之间的状态转换
进程上下文切换的细节
线程上下文切换的细节
线程的同步和互斥
什么是守护进程
什么是僵尸进程和孤儿进程
多线程编程注意的地方
虚拟内存的原理
IO 模型
slect、poll、epoll 的区别
边缘触发和水平触发的区别
进程调度算法
生成可执行文件的四个过程
怎么用程序判断一个系统是大端字节序还是小端字节序
死锁产生的必要条件
如何避免死锁

算法

删除链表的结点
合并两个链表
常用的排序算法,哪些是稳定的哪些是不稳定的
快速排序的原理和实现
环形链表
环形链表II
两个栈实现队列
二分查找

作者:陈乐乐
链接:https://leetcode-cn.com/circle/discuss/IdrZuE/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850747.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号