![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
羽生少年
格物致知,知行合一!
展开
-
函数指针 & 指针函数
指针函数就是一个返回值为指针的函数,函数指针是一个指向函数的指针。一个很简单的判定方法就是观察(*),比如 int (*p)(int,int);有括号,*与p结合,*p就是个指针,指向返回值为整型且有两个整型参数的函数。int*p(int,int); 没有括号,*与int结合,int*为返回类型,p就是一个函数名,这时就是一个指针函数,同样有两个int形参,只不过返回值类型为int*...原创 2021-12-24 14:32:25 · 461 阅读 · 0 评论 -
让C++对象只能分配到堆/栈和静态区上并判断分配位置
对象分配到堆上的过程:三个形式的new要把对象分配到栈上,需要使用到new operator,而new operator会调用operator new和placement new。operator new用于调用malloc申请堆空间,如果申请失败会抛出bad_alloc异常 placement new用于“定向构造”,即在指定的内存上(这里就是指operator new申请的空间)调用构造函数以构造出新对象根据侯捷先生的书所说,STL(书中的版本)对于某些对象做了统一的分配和统一的构造,而不把原创 2021-12-01 14:00:12 · 896 阅读 · 0 评论 -
空指针赋值崩溃
什么是“空指针赋值错误”? - Thinbugvoid crash(){char* p = nullptr;*p = 0;}空指针被赋值会发生崩溃。原创 2021-10-12 16:10:31 · 759 阅读 · 0 评论 -
c语言实现去除字符串首尾空格
字符串内存图如下:引入头文件: 1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<string.h>函数原型:1 void trim(char *strIn /*in*/, char *strOut /*in*/);实现方法一:void trim(char *strIn, char *strOut){ int i, j ; i = 0; j =.原创 2021-02-25 01:32:44 · 5277 阅读 · 0 评论 -
C++ 计数排序
计数排序的原理:(1)首先,找出最大的元素,给“count[ ]”申请“最大元素的下标+1”个单元(因为数组下标是从0开始的,所以要+1);(2)然后,统计每个元素出现的次数,把次数存到“count[ ]”里;(3)最后,通过一个元素出现的次数-1,从而算出正确顺序的位置,再把元素放进去,就有顺序了。 因为不知道范围的大小,所以需要申请内存,如果知道范围的大小,就可以直接声明。...原创 2019-09-02 23:15:18 · 818 阅读 · 0 评论 -
求int在二进制存储时1的个数(C++)
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。输入:5输出:2代码如下:#include<iostream>#include<string>#include<cstring>using namespace std;int main() { int input; int output=0; cin >> inp...原创 2019-06-29 20:29:27 · 273 阅读 · 0 评论 -
判断字符串中的括号是否匹配——c和c++实现
判断字符串中的括号是否匹配递归实现:先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配……代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>// 在start与end中搜索匹配int fun(char *str, int start, int ...原创 2019-04-14 12:52:30 · 3992 阅读 · 0 评论 -
虚函数表
对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由...原创 2018-07-17 20:51:45 · 179 阅读 · 0 评论 -
exit() 与_exit的区别
_exit()函数:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;exit()函 数则在这些基础上作了一些包装,在执行退出之前加了若干道工序。exit()函数与_exit()函数最大的区别就在于 exit()函数在调用 exit 系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。#include<unistd.h> main() { pr...原创 2018-06-16 11:47:10 · 248 阅读 · 0 评论 -
判断手机号码是否符合要求
我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:1、 长度13位;2、 以86的国家码打头;3、 手机号码的每一位都是数字。请实现手机号码合法性判断的函数要求:1) 如果手机号码合法,返回0;2) 如果手机号码长度不合法,返回13) 如果手机号码中包含非数字的字符,返回2;4) 如果手机号码不是以86打头的,返回3;要求实现函数:int s int...原创 2018-04-03 22:35:48 · 3576 阅读 · 0 评论 -
位运算与逻辑运算
小白开始学习编程,计算机基础知识很是薄弱,于是打开百度,恶补好多,下面我们讲讲位运算与逻辑运算的区别。 首先从概念上区分下,位运算是将运算符两边的数字换算成二进制(例:0000010001)后比较相同位置上的0、1进行运算的。逻辑运算即比较运算符两边的逻辑值(true或false)。概念比较抽象,下边借助实际例子比较下。 位运算先将每个数转换成二原创 2018-01-04 19:14:11 · 3506 阅读 · 1 评论 -
C语言的那些秘密之---函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2018-01-02 22:40:50 · 307 阅读 · 0 评论