C语言【面试】常用知识点总结

C语言常用知识点总结(重要)

指针与数组,指针与函数?

数组是用于存储多个相同类型的集合

指针是变量,存放的是其他变量在内存中的地址

区别:

​ 赋值:数组不可以直接相互复制,只能数组中的每个元素依次赋值或者拷贝
​ 指针可以相互赋值

​ 表示范围:数组的有效范围就是某个空间的范围

​ 指针可以指向任意地址

​ sizeof单目运算符:数组所占的内存大小:sizeof(数组名)

​ 数组的大小:sizeof(数组名)/sizeof(数据类型)

​ 指针所有的sizeof 对于32位平台:均占有四个字节

​ 对于64位平台:均占有八个字节

指针数组与数组指针

​ 指针数组:是一个数组,数组的元素是指针。int *qishou[2] 指针数组

​ 数组指针:是一个指针变量,指针变量指向数组。int (*p)[3] 数组指针

​ 对于数组指针的访问形式1.数组法 ; 2.指针法

			数组法:*(p)[j] 指针法:*((*p)+j)

C语言将数组进行传参时将进行退化

​ 在传递整个数组作为函数参数时,将数组名看作是常量指针

局部变量和全局变量是否可以重名?

可以,作用域的问题,

但是如果是在C++里面使用全局变量需要使用"::"来区分

如何引用一个已经定义过的全局变量?

已经定义的全局变量使用extern关键字来进行声明

全局变量和静态全局变量的区别?

  • 从存储方式上来看:

    没有区别;因为本身全局变量就是静态存储的,

  • 从作用域上来看:

​ static把全局变量的作用域减少了

​ 当一个源程序由多个源文件组成时,非静态全局变量对各个源文件有效,静态成员变量则仅限于同一个源文件内。

Const和Define的区别?

编译器处理的方式不同:

​ define是在预处理阶段展开

​ const常量是在编译运行阶段使用

类型和安全检查(const的安全性更高)

​ define宏没有类型,当然也不做类型检查,define在预编译阶段就已经完成替换,所以也后续不能进行调试

​ const有具体的类型,执行更严格的类型检查,此外const也可以调试,

​ const修饰的变量存放在只读存储区,可以节省开销

​ 常量折叠

存储方式不同

​ 宏仅是展开,不分配内存

​ const在程序运行过程中有一次备份,占用数据段

指针和数组在strlen和sizeof中的大小计算?

strlen()函数接收的参数是指针,计算数组长度时不需要算上**‘\0’**,但是是需要遇到末尾的’\0’才结束


int main()
{
	int a[3][4] = { 0 };

	printf("%d\n", sizeof(a));//代表整个二维数组大小
	printf("%d\n", sizeof(a[0][0]));//代表第一行第一个元素
	printf("%d\n", sizeof(a[0]));//代表第一行元素总大小
	printf("%d\n", sizeof(a[0]+1));//代表第一行第一个元素的地址跳过一个整型后的地址
	printf("%d\n", sizeof(*(a[0]+1)));//代表第一行第二个元素解引用后的类型大小
	printf("%d\n", sizeof(a+1));//代表首元素地址(即第一行地址) + 1 - 即第二行地址
	printf("%d\n", sizeof(*(a + 1)));//代表*(a+1) <=> a[1],第二行元素总大小
	printf("%d\n", sizeof(&a[0]+1));//&a[0]代表取出第一行的地址,+1代表取出第二行的地址
	printf("%d\n", sizeof(*(&a[0] + 1)));//解引用,计算的是第二行
	printf("%d\n", sizeof(*a));//代表对第一行地址解引用,计算的是第一行元素总大小
	printf("%d\n", sizeof(a[3]));

	return 0;
}

sizeof和strlen的区别

​ sizeof是C语言中的一个单目运算符,用来计算数据类型所占空间的大小,单位为字节;在编译时起作用而不是运行时,没有规定具体的类型

​ 而strlen是一个函数,用来计算字符串长度。使用时需要引用头文件 #include<string.h>,标准库函数

指针变量所占的空间大小为四个字节(32位系统)或者八个字节(64位系统)

形参和实参的区别?

形参是函数定义时使用的参数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值