C/C++
changeyourmind
从事物联网工作
展开
-
堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2016-07-11 08:43:28 · 269 阅读 · 0 评论 -
异或运算及其应用
异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。一、异或的性质交换律:a ^ b = b ^ a结合律:a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ cd = a ^ b ^ c 可以推出原创 2016-09-05 09:34:52 · 3309 阅读 · 0 评论 -
数组指针和指针数组的区别
http://www.cnblogs.com/mq0036/p/3382732.html数组指针和指针数组的区别数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:in转载 2016-10-13 18:07:13 · 327 阅读 · 0 评论 -
error C3861: 'assert': identifier not found
编译环境:VS2005 工程配置:程序增加如下代码:#include //包含C标准库,断言库assert((1 == number) || (2 == number) || (3 == number) || (4 == number) || (5 == number));//assert 是c标准里的一个宏目的:在DEBUG版本中检查API原创 2016-10-15 11:53:53 · 5151 阅读 · 0 评论 -
简单介绍C语言中的回调函数
本文档介绍C语言中的回调函数回调函数是C语言的一种常用的高级应用,在库函数和应用程序中都有广泛的应用。要点:1.回调函数的调用方式2.回调函数的完全形式的参数传递原则3.C语言库函数的回调函数使用回调函数的概念和作用回调函数是程序中一种常用的函数调用方式。其特点是可以在下层软件模块(宏观上的被调用者)中,调用来自上层的软件模块(宏观上的调用者)中的函数,这和原创 2016-11-10 17:45:00 · 1158 阅读 · 0 评论 -
程序员励志名言
52、“过去的33年里,我每天早上看着镜子问自己:“今天是我生命的最后一天吗?我是否要去做今天该做的事?”一天一天太多次是“不是”,我知道这需要改变…所有的事情——所有身外的期望,所有的骄傲,所有的对困难和失败的恐惧——这些东西在死亡面前立刻消失的无影无踪,只剩下真正重要的东西。想着自己即将死去,这是让我避免落入担心失去什么的陷阱里的最好的方法。” —— Steve Jobs1、作为一个真转载 2016-12-01 09:21:26 · 4490 阅读 · 0 评论 -
c语言中有符号和无符号数据类型的区别(II)
原版出处:http://bbs.csdn.net/topics/340253678C语言中提供了很多整数类型(整型),主要区别在于它们取值范围的大小。int代表有符号的整数,也就是说,用int声明的变量可以是正数也可以是负数,也可以是零,但是只能是整数。比如:int a = 3; int b = 0; int c = -5;以上这些都是合法的。int的取值范围因机器而异,一般而言,在较旧的转载 2016-12-09 16:19:23 · 3866 阅读 · 0 评论 -
C中定义了一些字母前加"\"的意思?比如\r\n
转义字符C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等。实际上,所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示这种表示方式称之为"转义字符",因为因为后面的字符,都不是它本来的ASCII字符意思了。作用转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HT原创 2017-01-16 11:14:44 · 1697 阅读 · 0 评论 -
C/C++语言二维数组的传参方法总结
转载 https://blog.csdn.net/gqb_driver/article/details/8886687C/C++语言将二维数组作为参数传递容易使人迷惑且易出错,本文将常用的几种方法列出,以方便用时查阅。三种方法总结如下(VS2005/GCC验证成功):方法一:形参为二维数组并给定第二维长度 此方法是最简单最直观的方法,形参与实参一样,容易理解。举例:#inclu...转载 2019-01-10 15:53:18 · 1211 阅读 · 0 评论 -
C 和C++结构体的区别
结构体里是不是不能定义函数答:c中不能(可以采用函数指针的方式),c++里可以在结构体内定义函数,用法和class定义类是一样的,说穿了struct 和 class用法相同(C++里的结构体非常好用,直接在内部用函数对相应的变量初始化,但要在调用时才会触发初始化),但要注意的一点是,struct默认的是public类型,而class默认的是private类型的。注:在C++里,原创 2016-08-13 16:31:51 · 414 阅读 · 0 评论 -
#pragma once与#ifndef两种防止头文件二次编译的区别
引用:http://blog.csdn.net/zlhy_/article/details/8192580在最开始接触到C语言的时候,看到很多大牛们写的代码里面就有#ifndef #define #endif 这三条语句,当时不明白什么意思,慢慢的后来自己也开始用了,也知道了他们合起来使用时为了防止头文件被二次编译,因为我们曾经写代码的过程中一定遇到过等类似的错误吧。到了学习C++的时候转载 2016-07-07 09:45:59 · 372 阅读 · 0 评论 -
#ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif
经常看到别人的头文件 有这样的代码#ifdef __cplusplusextern "C" {#endif // C 样式 的函数 #ifdef __cplusplus}#endif这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的原创 2016-08-05 15:28:03 · 5468 阅读 · 0 评论 -
关于取地址和引用
引用:(注意只有在C++中才有取引用)int q = 5;int &p = q; //p = 5, q= 5;p = 3; //p=3, q = 3; p 即是 q。只是 p是q的别名。取地址:int q = 5, p; p = &q;//p = 5, q= 5; // p 拷贝了一份 q 的数据而已转载 2016-07-13 11:27:09 · 570 阅读 · 0 评论 -
电脑走时比北京时间快之如何设置系统时间
问题描述:设置公司设备电脑工控机的时间与北京时间一样,过了一段时间后就比北京时间快了,一个钟头左右,快了15分钟左右脑子开始高速运转其起来:于是乎就开始怀疑问题的原因所在,CMOS的时间有问题?电脑中毒了?问题是同款产品的工控机都有此问题,而其它产品的同款工控机却没有,于是乎排除CMOS的时间问题(当然有怀疑是这个批次的工控机可能出了问题,问题是这家公司做的这款工控机很稳定啊,到此原创 2016-07-14 17:52:22 · 4295 阅读 · 0 评论 -
C语言强化指针高级应用学习心得
一.关于指针传递的思考例1-1:#includechar* test(){ char str[] = "this is a test"; return str;} int main(void){ char* pStr = NULL; pStr = test(); puts(pStr);转载 2016-07-27 11:37:49 · 3112 阅读 · 0 评论 -
回调函数的使用方法之例程说明
http://blog.163.com/ssou_1985/blog/static/2953203620123361340352/看了人家的例子,比看那么多定义好多了。一看就明白了。好人啊!老外把国人玩的不是人了。国人还自己玩自己。非把一个简单的东西复杂化。叫那么难理解!!完啦,窝里斗的典型!!!!!!!!回调函数:我的理解。假设 A是回调函数,B是调用者,B参数里一个是指向A的函数指原创 2016-07-27 12:06:53 · 822 阅读 · 0 评论 -
Unicode字符集和多字节字符集关系
在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。 在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主原创 2016-07-27 16:39:43 · 508 阅读 · 0 评论 -
野指针,悬垂指针,垃圾内存,内存“黑洞”
野指针首先他不是NULL指针,其次他指向的内存是不合法的,这个不合法的内存俗称“垃圾”内存。它产生的原因一个是在free或是delete后,没有及时将指针设置为NULL。野指针的检测也是很困难的,比如用if(0 == ptr)也是不行的,因为在free或是delete后ptr并没有被设置为NULL。关于为什么是(0 == ptr)而不是(ptr == 0),这一点建议去看Effective C++转载 2016-07-07 12:07:32 · 365 阅读 · 0 评论 -
VS2005编译器自定义宏__FILE__,__LINE__,__TIME__
#include "stdio.h"#include "string.h"#include "windows.h"void Test(void){ char *cp_str = NULL; cp_str = new char[100]; strcpy(cp_str,"Hello,world!"); printf(cp_str); return;}void main()原创 2016-06-26 11:45:39 · 723 阅读 · 0 评论 -
回文之递归应用
//递归实现回文的判断,C++和C的实现方法//1#include using namespace std; int fun(int low, int high, char *str, int length) { if (length == 0 || length == 1) return 1; if (str[low原创 2016-06-26 11:39:57 · 647 阅读 · 0 评论 -
缓冲区溢出攻击
http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0day安全:软件漏洞分析技术》一书将缓转载 2016-07-20 12:00:15 · 2814 阅读 · 0 评论 -
二级指针的作用详解
原文地址:http://blog.csdn.net/majianfei1023/article/details/46629065一、概念在如下的A指向B、B指向C的指向关系中:首先C是"一段内容",比如你用malloc或者new分配了一块内存,然后塞进去"一段内容",那就是C了。C的起始地址是0x00000008。B是一个指针变量,其中存放着C的地址,但是B也要占空间的啊,所以...转载 2019-01-10 16:35:37 · 2338 阅读 · 0 评论