关于C/C++的一些知识点整理 (5)

本文整理了C/C++中的一些关键知识点,包括运算符优先级、格式控制符、函数模板与类模板实例化、纯虚函数的定义、0长度数组的用途以及指针与数组的关系。通过对这些概念的解析,帮助读者深入理解C/C++的语法和特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 

解析:==的优先级小于<=。

2.

解析:如果是小写的u则输出32769,大写的字母不能当作格式控制符。

3.

!!!!!没懂!!!!!!

4.

函数模板和类模板都是由编译器实例化。

类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化。

一个类定义中,只要有一个函数模板,这个类就是类模板。

5.

解析:最后一个选项#define N 2008 后面不加分号就是对的。

6.

纯虚函数的格式:virtual <类型> <函数名> (<参数表>) = 0;

例:virtual void print()=0;

声明纯虚函数的类是抽象类,不能实例化!基类被虚继承才是虚基类。

7.

首先对0长数组做一个解释:

用途 :长度为0的数组的主要用途是为了满足需要变长度的结构体。

用法 :在一个结构体的最后 ,申明一个长度为0的数组,就可以使得这个结构体是可变长的。对于编译器来说,此时长度为0的数组并不占用空间,因为数组名本身不占空间,它只是一个偏移量, 数组名这个符号本身代 表了一个不可修改的地址常量 (注意:数组名永远都不会是指针! ),但对于这个数组的大小,我们可以进行动态分配.

8.

        数组名是数组这种类型的变量名,所以对数组名取地址是取的整个数组的地址,所以&a+1自然要跨过整个数组的长度,本题即跨过2*5 = 10个int的长度。

       有了上述概念,再来分析这道题,int *ptr = (int *)(&a+1),p此时指向的地址应该是a[1][4]后面的地址,由于ptr是int型指针,ptr-3应该是ptr向前移动3个元素,即ptr-3指向a[1][2],所以*(ptr -3) = 9。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值