C语言测试三

本文介绍了C++中的const关键字的用法,包括常量变量、常量指针和指针常量。同时讨论了指针操作可能导致的错误,如数组越界、空指针和野指针。此外,还涉及值传递和址传递的区别,以及深拷贝和浅拷贝在处理指针时的不同。文章还提到了二级指针、数组和指针的关系,以及结构体和联合体的异同。最后,讲解了如何防止头文件重复引用,堆溢出的原因,以及宏定义的swap函数和函数指针的概念。
摘要由CSDN通过智能技术生成
  1. const的作用和例子

    修饰变量:

    ​ 说明该变量不可以被改变(const int)

    修饰指针:

    ​ 常量指针(const int *)

    ​ 指针常量(int const *)

  2. 使用指针发生的错误有哪些

    数组越界、空指针、野指针

  3. 函数参数传递,值传递和址传递的区别

    值传递和址传递本质是一样的,都会有新的内存生成

    址传递保存的是地址,所以可以修改外部的值,共享同一片内存

  4. 二级指针++和一级指针++有什么区别

    二级指针自增,偏移4字节(32位系统),因为它的数据类型是一个一级指针

    一级指针自增,偏移数据类型大小

  5. 深拷贝和浅拷贝的区别

    浅拷贝就是单纯的赋值,没有考虑指针的问题

    深拷贝是手动实现的,考虑了指针的问题,一般不会使用同一片内存

  6. *char(map)[15]和int **map的区别

    char(*map)[15]是一个数组指针,它指向一个类型为char[15]的数组,访问方式为(*map)[0] or map[0][0]

    int ** map 是一个二级指针,指向int*的地址也就是指向一级指针的地址,访问方式为*map表示一级指针,**map表示具体的内容

  7. 联合体和结构体有什么区别

    结构体和联合体都是由多个不同的数据类型成员组成

    联合的不同成员赋值,将会对其他成员重写,原来成员的值就不存在

  8. struct A{int a,char b,int c,char d, char e}和struct{int a,int c,char b,char d,char e}的区别

    占用的内存不一样,内存对齐以最大的数据类型为分割单位

  9. struct A{int a,char b,int c,char d, char e}的sizeof大小

    16字节

  10. 用变量a给出下面定义

    1. 一个整型数 int a
    2. 一个指向整形数的指针 int *a
    3. 一个指针的指针,它指向的指针是指向一个整型数 int **a
    4. 一个有10个整型数的数组 int a[10]
    5. 一个有10个指针的数组,该指针是指向一个整型数的 int* a[10]
    6. 一个指向有10个整型数组的指针 int (*a)[10]
    7. 一个指向函数的指针,该函数有一个整型参数并返回一个整型数 int (*a)(int)
    8. 一个有10个指针的数组,该指针指向一个函数,改函数有一个整型参数并返回一个整型数 int ((*a)[10])(int)
  11. 数组和链表的区别

    数组:数据顺序存储,固定大小

    链表:数据可以随机存储,大小可以动态改变

  12. 头文件中ifndef/define/endif干什么

    防止该头文件被重复引用

  13. 堆溢出一般是由什么原因导致的

    没有回收垃圾资源

  14. 用宏定义写出swap(x, y),即交换两数

    #define swap(x, y) (x) = (y) - (x); (y) = (y) - (x); (x) = (y) + (x)

  15. 指针函数与函数指针的区别

    指针函数是指一个返回指针类型的函数,函数指针是指一个指向函数的指针

  16. 打印当前源文件的文件名和当前行

    printf("%s %s",__FILE__,__LINE__);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值