-
const的作用和例子
修饰变量:
说明该变量不可以被改变(const int)
修饰指针:
常量指针(const int *)
指针常量(int const *)
-
使用指针发生的错误有哪些
数组越界、空指针、野指针
-
函数参数传递,值传递和址传递的区别
值传递和址传递本质是一样的,都会有新的内存生成
址传递保存的是地址,所以可以修改外部的值,共享同一片内存
-
二级指针++和一级指针++有什么区别
二级指针自增,偏移4字节(32位系统),因为它的数据类型是一个一级指针
一级指针自增,偏移数据类型大小
-
深拷贝和浅拷贝的区别
浅拷贝就是单纯的赋值,没有考虑指针的问题
深拷贝是手动实现的,考虑了指针的问题,一般不会使用同一片内存
-
*char(map)[15]和int **map的区别
char(*map)[15]是一个数组指针,它指向一个类型为char[15]的数组,访问方式为(*map)[0] or map[0][0]
int ** map 是一个二级指针,指向int*的地址也就是指向一级指针的地址,访问方式为*map表示一级指针,**map表示具体的内容
-
联合体和结构体有什么区别
结构体和联合体都是由多个不同的数据类型成员组成
联合的不同成员赋值,将会对其他成员重写,原来成员的值就不存在
-
struct A{int a,char b,int c,char d, char e}和struct{int a,int c,char b,char d,char e}的区别
占用的内存不一样,内存对齐以最大的数据类型为分割单位
-
struct A{int a,char b,int c,char d, char e}的sizeof大小
16字节
-
用变量a给出下面定义
- 一个整型数 int a
- 一个指向整形数的指针 int *a
- 一个指针的指针,它指向的指针是指向一个整型数 int **a
- 一个有10个整型数的数组 int a[10]
- 一个有10个指针的数组,该指针是指向一个整型数的 int* a[10]
- 一个指向有10个整型数组的指针 int (*a)[10]
- 一个指向函数的指针,该函数有一个整型参数并返回一个整型数 int (*a)(int)
- 一个有10个指针的数组,该指针指向一个函数,改函数有一个整型参数并返回一个整型数 int ((*a)[10])(int)
-
数组和链表的区别
数组:数据顺序存储,固定大小
链表:数据可以随机存储,大小可以动态改变
-
头文件中ifndef/define/endif干什么
防止该头文件被重复引用
-
堆溢出一般是由什么原因导致的
没有回收垃圾资源
-
用宏定义写出swap(x, y),即交换两数
#define swap(x, y) (x) = (y) - (x); (y) = (y) - (x); (x) = (y) + (x)
-
指针函数与函数指针的区别
指针函数是指一个返回指针类型的函数,函数指针是指一个指向函数的指针
-
打印当前源文件的文件名和当前行
printf("%s %s",__FILE__,__LINE__);
C语言测试三
最新推荐文章于 2024-09-19 22:31:53 发布
本文介绍了C++中的const关键字的用法,包括常量变量、常量指针和指针常量。同时讨论了指针操作可能导致的错误,如数组越界、空指针和野指针。此外,还涉及值传递和址传递的区别,以及深拷贝和浅拷贝在处理指针时的不同。文章还提到了二级指针、数组和指针的关系,以及结构体和联合体的异同。最后,讲解了如何防止头文件重复引用,堆溢出的原因,以及宏定义的swap函数和函数指针的概念。
摘要由CSDN通过智能技术生成