C面试常考知识点详解

2023-05-16

小结清单:


指针与引用区别与联系

指针与数组的区别与联系

结构体内存对齐

指针与引用区别与联系


联系:


底层实现方式相同,都是按照指针的方式实现。


区别:


(1)引用必须初始化,指针可以不用初始化;

(2)引用一旦定义就不能改变,指针可以改变指向;

(3)sizeof的含义不同:sizeof指针的大小就是指针类型所占的字节数,引用是引用这个变量类型占的字节数;

(4)自增、自减含义不同:指针自增、自减表示位置的改变,引用的自增、自减表示数值的改变;

(5)存在多级指针,不存在多级引用;

(6)没有空引用,但是有空指针;

(7)引用比指针使用起来相对安全;


指针与数组的区别与联系


联系:


(1)指针与数组的关系:当指针变量被初始化成数组名时,该指针变量指向了数组;

(2)指向数组元素的指针:


int a[10];
int *pa;
pa=a;
pa=&a[0];
pa=a;


(3)指针与一维数组:任何由下标可以完成的操作都可以通过指针来实现(指针加偏移量);

(4)指针与多维数组:指向数组元素的指针变量,指向由n个整数组成的一维数组的指针变量;

(5)指针与字符数组:C语言中,字符串操作都是用指针来完成的;


区别:


(1)数组作为函数参数时,会退化为指针,实际上相当于传递的是指针;

(2)数组名可作为指针常量;

(3)数组是开辟一块连续的内存空间,数组本身的标识符代表数组本身,可以用sizeof求大小;

(4)指针只是分配了一个指针大小的内存,并把它的值指向某个有效的内存空间,因此不能在传递指针参数的被调用函数中用sizeof计算数组大小;


结构体内存对齐


引入结构体内存对齐的原因:


(1)不同平台并不是可以访问任何一个空间;

(2)提升访问速度(读写速度);


结构体内存对齐原则:


(1)结构体的第一个成员在结构体变量偏移量为0的地址处;

(2)其他成员变量要对应到对齐数整数倍的地址处;

(3)对齐数为当前机器的最大对齐数与结构体变量最大对齐数的较小值;

(4)结构体的总大小为最大对齐数的整数倍;

(5)如果嵌套了结构体,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是最大对齐数的整数倍;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C面试常考知识点详解 的相关文章

  • win10主机ping不通win10虚拟机

    原因是ICMP回显请求规则未开启 xff0c 解决方法在文章末尾 环境说明 win10虚拟机 192 168 136 136 win10虚拟机采用的网络连接是 NAT 模式 ipconfig结果如下 xff1a 以太网适配器 Etherne
  • <操作系统> 理发店问题(选做)C语言实现

    问题描述 xff1a 代码 xff1a span class token macro property span class token directive keyword include span span class token str
  • 特殊矩阵的压缩存储及转置

    一 对称矩阵及其压缩存储 1 对称矩阵 在矩阵中最特殊的一类应该属于对称矩阵 xff0c 对称矩阵的行和列是对应相等的 对称矩阵就是关于主对角线对称 xff0c 两边的元素的值对应相等 xff0c 在数学中我们把用主对角线隔开 xff0c
  • STL浅析set&map

    map和set的底层实现原理和接口使用 1 set和map的底层实现 set和map属于STL中的一种关联式容器 xff0c 底层实现是红黑树 2 set容器的特点 1 set和map 容器中的元素自动进行有序排列 默认为升序排列 xff1
  • Linux下的文件操作权限

    Linux下进入一个目录需要什么权限 xff1f 普通用户下 xff1a 首先我们在普通用户下 xff0c 取消文件code的所有权限chmod 000 code 当我们执行cd code 想进入当前目录时 xff0c 发现权限不允许 接下
  • linux下的常见命令

    cd change directory 进入个人的主目录 cd home 进入 39 home 39 目录 39 cd 返回上一级目录 cd 返回上两级目录 cd 返回上次所在的目录 ls list 查看目录中的文件 ls l 显示文件和目
  • task_struct结构体成员小结

    背景知识 task stuct结构体 被称为进程描述符 xff0c 用 来管理进程Linux内核的进程 xff0c 这个结构体包含了一个进程所需的所有信息 它定义在 include linux sched h文件中 可以说它是linux内核
  • Linux下的简单进度条实现

    进度条 计算机在处理任务时 xff0c 实时的 xff0c 以图片形式显示处理任务的速度 xff0c 完成度 xff0c 剩余未完成任务量的大小 xff0c 和可能需要处理时间 xff0c 一般以长方形条状显示 主要功能 xff1a 1 显
  • 九大排序之——希尔排序

    希尔排序 xff1a 思想 xff1a 希尔排序是为了防止直接插入排序出现最坏情况所做的一种改进 xff0c 将原本的排序过程分为预排序和直接插入排序两个阶段 预排序阶段 xff1a 将整个预排序的序列分为若干个待排序的子序列 xff0c
  • 僵尸进程与孤儿进程模拟实现

    背景知识 僵尸进程 xff08 Zombies xff09 xff1a 1 僵尸进程是一个比较特殊的状态 xff0c 当进程退出父进程 xff08 使用wait 系统调用 xff09 没有没有读取到子进程退出的返回代码时就会产生僵尸进程 僵
  • 队列模拟实现

    队列的特点 xff1a 先进先出 后进后出 队列的常见操作 xff1a Push 往队尾插入一个元素 Pop 从队头删除一个元素 Front 返回队列的第一个元素 Back 返回队列的最后一个元素 Size 求队列的元素个数 Empty 判
  • ssh端口转发(之kettle ssh方式连接数据库)

    ssh参数解释 格式 ssh user 64 host command 选项 xff1a 1 xff1a 强制使用ssh协议版本1 xff1b 2 xff1a 强制使用ssh协议版本2 xff1b 4 xff1a 强制使用IPv4地址 xf
  • str库函数模拟实现

    常见str函数功能表 xff1a strcat 将字符串str2连接到str1之后 xff0c 并返回指针str1 strncat 将字符串from 中至多count个字符连接到字符串to中 xff0c 追加空值结束符 返回处理完成的字符串
  • min栈实现

    题目 xff1a 实现一个栈 xff0c 要求实现Push xff08 出栈 xff09 Pop xff08 入栈 xff09 Min xff08 返回最小值的操作 xff09 的时间复杂度为O 1 分析 xff1a 这道题目的主要难点在于
  • 栈实现队列&&队列实现栈

    背景知识 xff1a 动态栈的模拟实现 xff1a http blog csdn net double happiness article details 70170984 队列的模拟实现 xff1a http blog csdn net
  • 一个数组实现两个栈

    分析 xff1a 用一个数组实现两个栈有三种思路 xff1a xff08 1 xff09 将数组按照奇 偶为分成两组 xff08 2 xff09 将数组按照从两边到中间分成两组 xff08 3 xff09 将数组按照从中间到两边分成两组 比
  • 栈的压入弹出序列

    题目描述 xff1a 判断一个栈的输出序列是否是正确的 xff0c 时间复杂度要求O N 示例 xff1a 输入栈 xff1a 1 2 3 4 5 1 输出栈 xff1a 4 5 3 2 1 2 输出栈 xff1a 4 3 5 1 2 分析
  • list模拟实现

    双向链表代码实现 xff1a span style font size 24px pragma once 双向链表 template lt class T gt struct ListNode T data 当前节点中的数据 ListNod
  • C模拟实现静态顺序表

    头文件模块 xff1a span style font size 24px include lt iostream gt typedef int DATATYPE const int MAX 61 5 struct SeqList DATA

随机推荐

  • Mem库函数模拟实现

    本篇视图 xff1a 1 memset 2 memcpy 3 memmove 4 memcmp 5 memchr memset 功能 xff1a 将一段内存初始化为某个值 xff1b 函数拷贝ch 到buffer 从头开始的count 个字
  • Python15_布尔值_break_continue_pass_else

    布尔值 用数据做判断 xff1a 布尔值 计算机利用数据有三种方式 xff1a 1 直接使用数据 xff0c 2 计算和加工数据 xff0c 3 用数据做判断 布尔值 True和False 代码将会无限运行 xff0c 陷入 死循环 xff
  • atexit函数总结

    函数名 xff1a atexit 头文件 xff1a include lt stdlib h gt 函数原型 xff1a int atexit void func void 功能 xff1a 当程序终止执行时 xff0c 函数调用函数指针f
  • 递归问题的处理

    经典问题集锦 xff1a 1 猴子吃桃问题 2 小球落地问题 猴子吃桃问题描述 xff1a 从前有一群群猴从果园里采来了许多桃子 xff0c 第一天吃掉采来桃子的一半之后 xff0c 猴王又多吃了了一个 xff0c 第二天吃掉了剩下的一半之
  • 编程实现求一个整数的二进制中0和1的个数

    声明 xff1a 假定该数是在32位平台的机器上运行 xff0c 在更高或最低平台上的原理相同 核心最优算法 xff1a 求1的个数 xff1a num amp 61 num 43 1 求0的个数 xff1a num 61 num 43 1
  • C语言if语句中的零值比较

    目录 xff1a 布尔变量与零值比较 整型变量与零值比较 浮点变量与零值比较 指针变量与零值比较 布尔变量与零值比较 规则 xff1a 不可将布尔值直接与0 1或者true false比较 代码示例 xff1a span style fon
  • vs下的debug和release版本的区别

    vs下的版本分类 xff1a Debug版本 通常称为调试版本 xff0c 通过编译选项的配合 xff0c 编译的结果通常包含调试信息 xff0c 可以设置断点 单步调试 使用TRACE ASSERT等调试输出语句并且编译器不会对代码进行任
  • 二进制文件与文本文件的区别

    文本文件和二进制文件的定义 xff1a 计算机在物理内存上面存放的都是二进制 xff0c 所以文本文件和二进制文件的 主要 区别是在逻辑上 的而不是物理上的 而从文件的编码方式来看 xff0c 文件可以分为文本文件和二进制文件 文本文件是基
  • 浅析FILE和fd之间的关系

    背景知识 fd 文件描述符 FILE 文件指针 文件描述符fd fd只是一个整数 xff0c 在open时产生 起到一个索引的作用 xff0c 进程通过PCB中的文件描述符表找到该fd所指向的文件指针file 因此在Linux系统下面 xf
  • 面向过程与面向对象的区别与联系

    处理问题方面 面向过程 xff1a 分析解决问题所需要的步骤 xff0c 通过分别去实现对应的函数来完成每一个步骤 xff0c 使用的时候一次去调用对应的函数即可 xff1b 面向对象 xff1a 面向对象的是把所处理的问题先抽象起来 xf
  • fork与vfork创建进程的区别

    进程创建的方式 xff1a 1 fork函数 2 vfork函数 fork函数 头文件 xff1a include lt unistd h gt 函数原型 xff1a pid t fork void 返回值 xff1a 创建成功子进程返回0
  • Linux下的各种id

    分类 用户标识符 xff1a 几个典型进程的ID及其类型和功能 常见标识符的返回值 span style font size 18px include lt sys types h gt include lt unistd h gt pid
  • Ubuntu 18.04开启root账户登陆

    step 1 设置root账户密码 命令 xff1a sudo passwd root step2 修改相关配置 打开 root profile文件 xff0c 将最后一行mesg n true修改为tty s amp amp mesg n
  • 深入理解vector的拷贝构造

    腾讯面试题 xff1a 请问vector的拷贝构造干了些什么 xff1f 拿到这道题可能很多人都已经暗自里庆幸 xff0c 对于学习过过数据结构的人 xff0c 对于vector这个结构体一定不会陌生 xff0c 但是如果在面试的过程中面试
  • 深入理解C++强制类型转换

    C 43 43 四种强制转换类型 static cast reinterpret cast const cast dynamic cast static cast 静态转换 xff0c 用于非多态类型 xff0c 任何标准的转换都可以用它
  • Linux背景设置

    桌面背景设置 对于Linux的CentOs系统 刚进入时系统默认的生成的背景如下 显然对于一些比较有艺术欣赏的人来说 xff0c 这个背景显然是很让人感到很不好受 xff0c 所以下面就来看一下如何更换桌面背景 1 单击鼠标右键 2 双击鼠
  • Linux常用工具安装和vim设置的命令实现

    声明 xff1a 本文是针对centos6 0的版本进行安装和设置的 xff0c 在现在下载的Centos版本上基本上会自带一些基本的工具 xff0c 因此在安装之前需要先进行检查 xff0c 如果不存在 xff0c 在进行下载安装 gcc
  • C实现当前机器模式是大端还是小端

    声明 xff1a 本文是在32位机器 xff0c vs2013下运行无误 大小端背景 xff1a 大小端这一词最早是来自 格列夫游记 xff0c 书中记录有一个村子 xff0c 村子里的人有一个强烈的争议 xff0c 关于吃鸡蛋的时候应该从
  • C模拟实现点分十进制IP转换

    声明 xff1a 本文在32位机器上测试无误 点分十进制 点分十进制是计算机网络中的一个名词 xff0c 是一种网络地址的表示方法 xff0c 每一组数字都是在0 255之间 xff0c 每个组之间都是通过 34 34 来进行分割的 xff
  • C面试常考知识点详解

    小结清单 xff1a 指针与引用区别与联系 指针与数组的区别与联系 结构体内存对齐 指针与引用区别与联系 联系 xff1a 底层实现方式相同 xff0c 都是按照指针的方式实现 区别 xff1a 1 引用必须初始化 xff0c 指针可以不用