c笔试题总结

1、关键字static的作用

  • 静态成员变量

                所有对象共享同一份数据

                在编译阶段分配内存

                类内声明,类外初始化

  • 静态成员函数

                所有对象共享同一个函数

                静态成员函数只能访问静态成员变量

2、static的应用场景?

①静态变量(静态成员变量)

在类中声明的静态变量是该类的所有对象共享的;并且可以通过类名调用

class MyClass {
public:
    static int count;  // 静态成员变量
    MyClass() {
        count++;
    }
};

int MyClass::count = 0;  // 静态成员变量类内声明,类外初始化

静态只能访问静态,但非静态既能访问静态也能访问非静态。

②静态函数(静态成员函数)

在类中定义的静态成员函数,静态函数是与类关联的函数,而不是与类的对象关联

通常用于执行与类相关的操作,而不需要访问类的实例(不需要实例化对象)。

class MathUtility {
public:
    static int add(int a, int b) {
        return a + b;
    }
};

int result = MathUtility::add(5, 3);  // 使用静态函数

③静态局部变量

静态局部变量在函数内部声明,但只初始化一次,然后在函数多次调用时保留其值。它们通常用于保存函数的状态信息。

其生命周期贯穿整个程序运行过程,而不仅仅是在函数调用时存在。

int myFunction() {
    static int counter = 0;  // 静态局部变量
    counter++;
    return counter;
}

④静态类

在 C++ 中,可以将类声明为静态,这将导致类的成员变量和成员函数也成为静态的

static 类是一种不能被实例化的类,通常用于包含一组静态方法或静态属性的命名空间。

public static class MathOperations {
    public static int add(int a, int b) {
        return a + b;
    }
}

3、引用和指针的区别?

指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,即指针是一个实体;

引用:跟原来的变量实质上是一个东西,只不过是原变量的一个别名而已。

区别:

1. 引用必须初始化,指针不需要。

2. 引用不能为空,指针可以为空。

3. 引用初始化后不能改变,指针可以改变所指对象的值。

4. 引用访问对象是直接访问,指针访问对象是间接访问。

5. 引用没有 const,指针有 const。

6. 指针是一个实体,而引用仅是个别名

4、指针大小只与系统有关,变量大小与系统和数据类型有关

①在32位系统中,指针大小为4字节。

②在64位系统中,指针大小为8字节。

③64位系统 char **p[4]:指针数组的大小是8*4=32

5、p、*p、&p的区别

p是一个指向数据类型的指针变量,存储的是某个变量的内存地址。

*p表示通过指针"p"访问的值。

&p就是取指针p的地址。

**p:二级指针,表示p所指向的地址里面存放的是一个指向类型的指针。

6、运算符优先级

! >算术运算符(+-*/)>关系运算符(==>=<=)>逻辑运算符&&>||>赋值运算符(=+=-=)

7、struct内存对齐规则

结构体的内存对齐规则_结构体内存对齐规则-CSDN博客

数据结构面试题

1、heap和stack分别有什么作用?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值