C/C++
文章平均质量分 82
fuyunliushuizjf
这个作者很懒,什么都没留下…
展开
-
C/C++ 打印文件名、行号、函数名的方法 .
转载出处:http://blog.csdn.net/cabinriver/article/details/8960119今天跟踪一段开源代码的时候,因为对代码不太熟悉,所以要打印一些关键的信息。便顺手整理了一下这个能打印文件名、行号、函数名的宏。1、打印文件名、行号、函数的两种方式/**************************************************转载 2016-09-07 09:51:54 · 3150 阅读 · 0 评论 -
static inline 和 extern inline 的含义
首先,关于inline就够烦人了,有的书上说inline关键字要加在定义前,声明时可以省略,有的说声明时加上inline函数就变成内联型, 有的说声明和定义形式要保持一致。在一个类中声明一个函数,函数的实现在外部,无论是仅仅在内部声明处加inline,还是在外部实现处加inline, 或是两个地方都加,编译均能通过,而且也无法通过调试的办法看出对程序到底有啥影响。搞不清到底要怎么写这个inline转载 2015-04-22 10:49:37 · 410 阅读 · 0 评论 -
C语言中volatile关键字的作用
一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的转载 2015-04-22 11:11:36 · 297 阅读 · 0 评论 -
__I、 __O 、__IO volatile是什么?怎么用?
__I、 __O 、__IO是什么意思? 这是ST库里面的宏定义,定义如下:#define __I volatile const /*!#define __O volatile /*!#define __IO volatile /*!显然,这三个宏定义都是用来替换成 volatile 和 const 的,所以我们先要了解 这两个关键字的作用: volatil转载 2015-04-22 11:00:22 · 325 阅读 · 0 评论 -
嵌入式工程师 学习路线
嵌入式工程师 学习路线近来嵌入式挺火,于是大家都往这里挤。我想提醒大家的是,嵌入式马上也会成为如今的软件业。在你进来之前请先考虑清楚。但只要我们真的学精了一样东西,不管它将来变成什么样,哪怕最后只剩下一个人,那个人也一定就是你自己。 很多人以为搞嵌入式就是随便找本书看看,在电脑上编几个程序就完事。非也,其实嵌入式的门槛是比较高的。具体如下: 1、您得有一定数量的Mone转载 2015-03-25 11:56:24 · 652 阅读 · 0 评论 -
itoa函数的实现
itoa函数的实现分类: 数据结构与算法2013-09-25 11:04 3220人阅读 评论(0) 收藏 举报 itoa()函数的功能是将一个整数转换为一个字符串,例如12345,转换之后的字符串为"12345",-123转换之后为"-123",欢迎大家的讨论。[cpp] view plaincopyprint?#转载 2015-03-25 08:59:38 · 551 阅读 · 0 评论 -
关于scanf连续输入字符或字符串等
#include "stdio.h"main(){ int i;char m;printf("输入 i:");scanf("%d",&i);printf("输入 m:");scanf("%c",&m);printf(" %c\n",m);printf(" %d\n",i);}以上程序不能实现程序应有的功能,因为输入i时的回车符号会被读入m中,输出m的时候转载 2015-03-23 16:34:52 · 2441 阅读 · 0 评论 -
scanf 和 printf的一般用法
一、printf函数调用的一般形式 printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: printf(“格式控制字符串”,输出表列)其中格式控制字符串用于指定输出格式。 格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字转载 2015-03-23 16:05:37 · 931 阅读 · 0 评论 -
C字符串处理函数
void *memccpy (void *dest, const void *src, int c, size_t n);从src所指向的对象复制n个字符到dest所指向的对象中。如果复制过程中遇到了字符c则停止复制,返回指针指向dest中字符c的下一个位置;否则返回NULL。void *memcpy (void *dest, const void *src, size_t n);转载 2015-03-23 09:20:49 · 293 阅读 · 0 评论 -
realloc函数原型及使用
realloc函数原型及使用 原型:extern void *realloc(void *mem_address, unsigned int newsize); 用法:#include 有些编译器需要#include 功能:改变mem_address所指内存区域的大小为newsize长度。 说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空转载 2015-03-12 17:02:55 · 1145 阅读 · 0 评论 -
C库函数重定向
#include 头文件 #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io转载 2015-04-18 15:25:10 · 1082 阅读 · 0 评论 -
C语言单向链表的建立
C语言单向链表的建立分类: linux2011-12-21 16:06 10995人阅读 评论(8) 收藏 举报语言cstruct数据结构存储null参考:http://www.itxyz.net/3jk/c/2010/0820/11016.html最近不是太忙,整理些东西,工作也许用得到。1,为什么要用到链表数组作为存放同类数据的集合,给我们在程序设计时带转载 2015-04-17 06:48:59 · 806 阅读 · 0 评论 -
进程与线程的区别
进程与线程的区别(转)Posted on 2007-02-06 23:06 BPM 阅读(82320) 评论(5) 编辑 收藏线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程转载 2015-03-19 21:11:01 · 271 阅读 · 0 评论 -
C++中引用(&)的用法和应用实例
转载连接:http://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.htmlC++中引用(&)的用法和应用实例对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好转载 2016-03-12 10:20:53 · 470 阅读 · 0 评论 -
C语言中的可变参数函数 三个点“…”
第一篇 C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: printf("%d",i); printf("%s",s)转载 2015-12-27 17:41:37 · 343 阅读 · 0 评论 -
C++的双冒号
转载地址:http://blog.sina.com.cn/s/blog_542bad910102vib1.html1、 作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分如:A,B表示两个类,在A,B中都有成员member。那么 A::member就表示类A中的成员mem转载 2015-12-27 17:14:01 · 553 阅读 · 0 评论 -
C++ operator关键字(重载操作符)
C++ operator关键字(重载操作符)http://blog.sina.com.cn/s/blog_4b3c1f950100kker.html operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方转载 2016-01-07 21:00:48 · 601 阅读 · 0 评论 -
什么是回调函数
很经典,能用自己的语言把回调函数的来龙去脉讲清楚,不简单。我看到的文章是作者转载原作者的,但是我并不知道原作者的博客地址。对原作者表示道歉,但这篇文章我非常喜欢,所以转载分享下~~~=========================================================================================================转载 2015-11-28 19:07:50 · 342 阅读 · 0 评论 -
类模板的定义和使用
如同函数模板一样,使用类模板使用户可以为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能取任意类型。类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。 定义类模板的一般形式是: template转载 2015-11-22 11:18:40 · 357 阅读 · 0 评论 -
关于“using namespace std”
本文转自 唯一的天空http://www.cnblogs.com/uniqueliu/archive/2011/07/10/2102238.html关于“using namespace std” 对于一个存在着标准输入输出的C++控制台程序,一般会在#include 的下一行发现一句话,using namespace std。这句话转载 2015-07-12 09:39:23 · 322 阅读 · 0 评论 -
C++中公有继承、保护继承、私有继承的区别
转载链接:http://www.cnblogs.com/itachi7/archive/2012/07/03/2575433.htmlC++中公有继承、保护继承、私有继承的区别公有继承时基类中各成员属性保持不变,基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的pu转载 2015-07-10 10:57:18 · 510 阅读 · 1 评论 -
C语言中最常用标准库函数
标准头文件包括: 一、标准定义() 文件里包含了标准库的一些常用定义,无论我们包含哪个标准头文件,都会被自动包含进来。 这个文件里定义: l 类型size_t (sizeof运算符的结果类型,是转载 2015-03-13 09:11:16 · 446 阅读 · 0 评论 -
c++ rand函数
C++中产生随机数种子对于初学者一直都很困惑.大家知道,在C中有专门的srand(N)函数可以轻松实现这一功能,然而在C++中则要复杂一些.下面是笔者学习的一点心得,希望对大家能有所帮助.(这里我们依然要借助C标准库中的rand()函数) 函数说明: int rand(); :返回从[0,MAX转载 2015-03-12 17:38:26 · 1753 阅读 · 0 评论 -
浅谈C语言中的联合体
联合体union 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构; 2)它的所有成员相对于基地址的偏移量都为0; 3)此结构空间要大到足够容纳最"宽"的成员; 4)其对齐方式要适合其中转载 2015-03-11 17:57:35 · 282 阅读 · 0 评论 -
gets() 函数
gets() 函数 【1】函数:gets(字符指针) 【2】头文件:stdio.h(c中),c++不需包含此头文件 【3】原型:char *gets( char *buffer ); 【4】功能:从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,转载 2015-03-17 17:37:51 · 1726 阅读 · 0 评论 -
堆和栈的区别(转过无数次的文章)
堆和栈的区别(转过无数次的文章)分类: C语言2009-04-30 23:26 132148人阅读 评论(156) 收藏 举报数据结构编译器windowsbyte存储扩展 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。转载 2015-03-20 08:19:40 · 275 阅读 · 0 评论 -
sprintf使用
sprintf使用 对于熟悉C的人来说,sprintf并不陌生,在很多情况下,一般都会使用sprintf来代替itoa.sprintf函数的原型是:int sprintf(char* str, const char* format, ...); 除了前两个参数类型固定外,后面可以接任意多个参数,格式化输出一个字符串:1) 整数格式化输出 如果要将转载 2015-03-16 17:18:06 · 630 阅读 · 0 评论 -
C++学习路线
从学习C++到现在已经有四个年头了,但是从来没有很深入学习,有人说C++是面向对象的编程语言,但是我在这里想说的是,C++是一个多泛型的编程语言,它既可以面向过程,比如我们完全可以用C++写C的代码,这是没问题的,它也是一个面向对象的语言,它具有面向对象的特征,可以模拟现实世界中的各种事物;它也是一个泛型编程语言,里面包含大量的模板特性,比如C++的标准库STL就是基于模板的一个库,C++语言的难转载 2015-03-16 10:22:36 · 268 阅读 · 0 评论 -
怎么学习linux
一、从基础开始:常常有些朋友在Linux论坛问一些问题和提一些建议,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了 Linux 的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux 就是希望构架网站,根本没有想到要先了解一下Linux 的基础。这转载 2015-03-26 10:17:08 · 289 阅读 · 0 评论 -
数据结构---单链表(建立,节点删除,节点插入)
//UNIX环境2011-02-03[cpp] view plaincopy#include #include #include typedef struct student { int num; char name[16]; struct student *next转载 2015-03-19 18:17:03 · 1046 阅读 · 0 评论 -
C语言的冒号另用----位域
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便。C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字转载 2015-02-09 14:48:50 · 442 阅读 · 0 评论 -
C语言静态函数
当一个源程序由多个源文件组成时,根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。1 内部函数(又称静态函数) 如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。定义一个内部函数,只需在函数类型前再加一个“static”关键字即可: static 函数类型 函数名(函数参数表)关转载 2015-02-09 14:56:59 · 337 阅读 · 0 评论 -
C语言面试题汇编
1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2.如何引用一个已经定义过的全局变量?转载 2015-02-09 16:23:03 · 22935 阅读 · 0 评论 -
字符串常见笔试题
字符串常见笔试题1 将字符串转化为整数。long stringToInt(char *s){ long result=0; for(int i=0;s[i]!='';i++) { if(int(s[i])57) {//除去非转载 2015-03-09 16:21:24 · 512 阅读 · 0 评论 -
memset函数详细说明
1。void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。2。例子#includevoid main(){char *s="Golden Global View";clrscr();memset(s,'G',6);printf("%s",s);getchar()转载 2015-03-17 17:28:39 · 382 阅读 · 0 评论 -
sizeof()用法汇总
sizeof()用法汇总sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型转载 2015-03-11 14:23:07 · 318 阅读 · 0 评论 -
malloc函数详解
一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include 或 #include (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free(转载 2015-03-11 10:59:46 · 252 阅读 · 0 评论 -
malloc()与calloc区别
Both the malloc() and the calloc() functions are used to allocate dynamic memory. Each operates slightly different from the other.Both the malloc() and the calloc() functions are used to allocat转载 2015-03-11 11:58:55 · 269 阅读 · 0 评论 -
断言机制2
用STM官方库的时候,要进行API调用参数检测。这个功能可以用一个宏定义来开启或者关闭。自己看#ifdef USE_FULL_ASSERT #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) void assert_failed(uint8_t转载 2015-03-11 10:39:40 · 403 阅读 · 0 评论 -
指针数组和数组指针的区别
指针数组和数组指针的区别Posted on 2012-01-10 11:15 romi 阅读(30062) 评论(6) 编辑 收藏这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指转载 2015-03-11 14:41:06 · 279 阅读 · 0 评论