
C/C++
C/C++中知识点以及面试总结
Rocketcp3
这个作者很懒,什么都没留下…
展开
-
C语言常见面试问题——数据类型,关键字,运算符,表达式
问题1:再32位/64位操作系统下,数据类型和指针所占的字节分别是多少?回答:char在32位和64位操作系统都是1个字节 int在32位和64位操作系统都是4个字节 short在32位和64位操作系统都是2个字 double在32位和64位操作系统都是8个字节 float在32位和64位操作系统下都是4字节 long在32位操作系统下是4字节,在64位操作系统是8个字节 指针在42位下是4字节,64位操作系统下是8字节。(重点...原创 2020-09-02 19:23:38 · 339 阅读 · 1 评论 -
关于auto的一些日常使用
在c++中auto是一个关键字,用来推演变量的类型。所以也就意味着用auto定义的变量必须要初始化(否则无法推演)比如这样使用可以实现基本的自动推演auto a=1;//推演a为整形auto *p=&a;//推演p为整形指针关于auto在for循环中的表现#include <stdio.h>#include <iostream>int main(){ int a[5] = { 1,2,3,4,5 }; for (auto &ii : .原创 2020-08-09 17:40:32 · 374 阅读 · 0 评论 -
进程虚拟地址空间的分配以及内容
环境:linux,32位操作系统首先虚拟空间的作用:为了防止恶意的程序修改其它程序的内存数据,因此引入了虚拟空间。大家可以这样理解:如果我们把一个进程也就是一个程序直接引入内存,那么别的恶意程序可以通过指针的偏移来恶意修改别的程序,这就造成了不安全,引入虚拟地址空间后每个程序有属于自己的虚拟地址空间,那么偏移也不会影响其它的程序。虚拟地址空间的大小:每当一个进程运行就会开辟一个2^32次方(也就是4G)的虚拟地址空间。所谓的虚拟和物理可以这样解释:这个东西存在,你也看得见就是物理的。原创 2020-07-09 14:42:18 · 857 阅读 · 0 评论 -
malloc,calloc,realloc,free的作用以及区别
首先c语言开辟动态内存有三个函数,分别为malloc(),callloc(),realloc()。而释放内存只有free().在日常编码中,我们使用malloc最频繁,因为它最简单,只需要一个参数,即需要动态开辟的内存字节数,如果堆里的连续空间能满足需要则将分配好的内存地址返回,否则将会返回空。char*arr=(char*)malloc(20);calloc只是在malloc的基础上将分配好的每个字节赋值为0,这功能使用并不是很常见,但是由于需要提供两个参数,所有没有malloc使用的多。原创 2020-07-05 22:10:12 · 464 阅读 · 0 评论 -
extern关键字的用法及注意事项
首先extern是一个关键字,它最简单的一个用法就是实现在一个文件中引用另一个文件中的变量或者函数。就比如我们一个项目下有两个文件,分别是a.cpp和b.cpp文件,当我们要在b.cpp中想使用a.cpp的全局变量或者是某一个功能函数时我们不需要再次编写,而是使用extern这个关键字来告诉系统我们要调用某个变量,具体如下//a.cpp#include<iostream>int c=1;int fun(int a,int b){ return a+b;}a...原创 2020-07-05 16:25:31 · 709 阅读 · 0 评论 -
关于strcpy和strncpy的面试题
问题1:strcpy()和strncpy()的区别1.首先两个函数的参数不同,所以功能不是完全相同。strncpy()比strcpy()多一个参数n,表示拷贝前n个字符。而strcpy()则是拷贝全部字符。2.因为strncpy中有参数n的存在,所以它只负责复制前n个字符,没复制字符串结尾的标记’\0‘。strcpy()则复制了’\0‘。3.两者的错误处理,当strncpy()中规定复制的长度n大于目标的长度时会直接报错;strcpy()如果目标的长度小于原长度的话则是能复制多少复制多少。c原创 2020-07-04 19:43:56 · 399 阅读 · 0 评论 -
c++顺序容器之——vector容器的实现(类模板)
看了前面的介绍今天给大家讲讲vector容器,首先vector就是我们数学中经常说的向量,原创 2020-05-28 18:45:07 · 1037 阅读 · 0 评论 -
链表的初步认识以及基本操作
记得上篇顺序表的博客曾经提到过链表,链表和顺序表共同组成线性表,链表逻辑相邻,物理上不相邻,顺序表则是逻辑和物理都相邻,可以简单的理解为顺序表中的数据相邻同时保存数据的地址也相邻,但链表仅仅是数据相邻,但数据的地址不相邻。因为链表物理不相邻这个特点所以我们在定义链表时除了放数据之外还要存放下一个数据的地址从而使数据连接起来。 他的一个基础结构为: ...原创 2019-03-15 20:25:54 · 250 阅读 · 0 评论 -
数据结构之顺序表的初步认识以及增删改查使用
顺序表是线性表的一种,还有一种是链表,顺序表特点是必须依次存放,不可以跳跃式存放,顺序表与链表不同之处在于顺序表在物理上相邻,可以简单的理解为它存放的数据地址相邻,而链表则不是它是数据结构中的重要组成部分,它由两部分元素构成,一种是保存的数据,另一种是数据的下表,这和我们以前学过的数组很相似,顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。使用它是需要用结构体进...原创 2019-03-15 19:46:02 · 353 阅读 · 0 评论 -
struct结构体的初步认识
结构体的作用: 在我们解决生活中的很多实际问题时我们会遇到很多不同的数据类型组成一个个体,比如说我们在构造学生管理系统时需要把一个学生的信息作为一个个体,这些信息有学号,姓名,成绩等信息,这时候我们用数组是无法解决这种不同数据类型的问题,所以此时我们就需要结构体。 结构体的定义:定义一个结构的一般形式为:struct 结构名{成员...原创 2018-11-14 13:51:31 · 286 阅读 · 0 评论 -
指针的算数运算
我们知道指针也是一种变量,既然是变量理论上便可进行算数运算,今天我们来一起探讨一下指针的算术运算。 printf("%d,%d\n",0xa,0x0000000a);int arr[10] = {1,2,3,4};int *p = arr;*p = 10;p++;大家看一下这串代码思考一下这里面的p++是加的什么呢?这个p++意思是加一个单元格,我们知道指针是4字节的...原创 2018-06-22 17:30:17 · 302 阅读 · 0 评论 -
数字的逆序 顺序 位数的输出
给出一个不多于5位的正整数,求: (1)求出它是几位数; (2)分别输出每一位数字; (3)按逆序输出各位数字,例如原数为321,应输出123。(1)(2)(3)...原创 2018-06-22 17:05:42 · 603 阅读 · 0 评论 -
指针入门
对于初学计算机的同学来说指针应该算是一个小难点,今天给大家介绍一下指针指针:指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器中的寄存器,简单来说我们完全可以把它当做地址来理解那么,如何定义一个指针呢,就是比平时的变量定义前多加一个*,例如:*P1,*P2,*PP等(字母可以自己决定,这里我们用p)指针可以存放的数据类型:int *p;//整形指针存放整型值 double *p;//浮...原创 2018-06-22 16:33:53 · 234 阅读 · 0 评论 -
C中的const
const 限定符,它把一个对象转换成一个常量 1、限定写权限,将变量变成只读 const int a=10;表示a是一个常变量不可修改。也可以表示为int const a=10; 2、const修饰它的直接右边,使其只读 const int *p=&a;const 直接修饰的*p,*p不可修改,但是p可以修改。...原创 2018-06-22 16:20:07 · 240 阅读 · 0 评论 -
关于float浮点数的误差分析
浮点型简单讲就是实数的意思。浮点数在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到;但用浮点数真的可以准确表示实数吗?让我们来研究研究吧。如下图代码所示,理论上我们输出的数字应该是4000,但结果确是4001.552979,这就说明float浮点数是存在误差的那么这些误差值是为何而来呢其实那是因为精度越来越高,占字节数...原创 2018-06-03 12:35:29 · 3027 阅读 · 0 评论 -
程序入门调试
1.先设置断点 在调试代码之前要先设置一个断点,否则调试无法进行;ps:设置断点的方法找到自己要测试的那一行代码,按f9或者也可直接用鼠标点击代码前的空白处如下图所示;2.熟悉常用的命令常用的命令符合有四个,分别为启动调试,终止调试,逐语句,逐过程图标 1. 启动调试。在启动调试在前要设置断点。快捷键:F52. 逐语句。当执行到某个函数的时候,就会进入这个函数,然后程序断点会跳转到这个函数里...原创 2018-06-03 12:10:16 · 334 阅读 · 3 评论