
c
文章平均质量分 75
天桥雨
这个作者很懒,什么都没留下…
展开
-
c语言基本出具类型的取值范围
1、C和C++语言中基本的数据类型有:字符型(char),整形(short, int, long), 浮点型(float, double) 类型字节数类型字节数char1short2int根据系统而定,可能是2或4long转载 2016-09-05 16:56:29 · 532 阅读 · 0 评论 -
混合编译:VS预编译头文件设置和屏蔽编译警告的操作
1.预编译头文件设置头文件预编译,是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后工程编译的时候就不再编译预先编译过的这些头文件,仅仅使用结果,预编译可以节省编译时间。预编译头文件是通过编译stdafx.cpp自动生成,以工程名命名,使用预编译头文件的文件第一个包含的都是stdafx.h。有时候,当一个项目中需要同时用到原创 2016-12-09 15:16:20 · 2761 阅读 · 0 评论 -
混合编译:在c中使用c++中的类对象和类成员函数
C中没有类和对象的概念,所以不识别C++的类对象和成员函数, 而如果要在c中使用c++的对象和成员函数应该怎么办呢?我们可以自己写一个c++普通函数封装,然后在c文件中用void*来调用该c++类对象,用封装函数来调用该普通函数,具体如下:PackBuilderApi.h//c和c++文件共用#ifndef _PACK_BUILDER_API_H#define _PACK_B原创 2016-12-09 16:38:42 · 548 阅读 · 0 评论 -
关于fputc、fgetc、printf、sprintf、sprintf_s以及fprintf
1.printfprintf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。printf()函数的调用格式为: printf("", )。格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还原创 2016-12-09 17:44:55 · 2218 阅读 · 0 评论 -
打开和关闭文件以及读取和回退字符的操作
函数简介 函数功能: 打开一个文件 函数原型:FILE * fopen(const char * path,const char * mode); 相关函数:open,fclose,fopen_s[1] ,_wfopen 所需库: stdio.h> 返回值: 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在转载 2016-11-17 20:27:36 · 2646 阅读 · 0 评论 -
main函数的两个参数
C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main(argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:main (argc,argv)int argv;char *argv[];或写成:main转载 2016-12-15 11:26:58 · 626 阅读 · 0 评论 -
关键字static/const的作用
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函转载 2016-12-15 13:08:27 · 296 阅读 · 0 评论 -
opencv的几个基础函数
#include #include "Barcode2D/MaxiCode.h"static int opencv_entry( int argc, char** argv );using namespace Barcode2D;int main(int argc,char *argv[]){ return opencv_entry(0, NULL);}原创 2016-12-15 14:38:46 · 426 阅读 · 0 评论 -
一些编程基础的注意(持续更新)
形参如果是字符或整型数组的数组名,用for循环赋值或strcpy赋值函数结束后可以保留这些值,而形参如果是指针的话,不能用strcpy赋值,而是直接等于,函数结束后不可以保留赋的值。 >>的时候如果超过最低位了,则超过的部分自动消失,无需先&再>>。如11110101,如果需要取高四位放在低四位上,不需要(11110101 & 11110000)>>4,直接11110101>>4即可,原创 2016-12-05 19:05:15 · 307 阅读 · 0 评论 -
关于函数返回值为指针类型的分析
先看一个例子,这是初学者经常遇到的问题char*GetString(void){ char p[]= "hello world"; return p; //编译器一般将提出警告信息}void main(void){ char *str = NULL; str = GetString();//str 的内容是垃圾,得不到转载 2016-12-05 18:58:36 · 18981 阅读 · 2 评论 -
C语言知识点学习之结构体成员变量后加冒号
typedef struct xx { unsigned int a:2; unsigned int b:3;}Xx;//“unsigned int a:2;“中后面的":2"表示成员a只占俩个位,而不是我们传统认为的占//4个字节这样整个结构体大小就为4个字节而不是8个字节,这样就可以达到节省内存//的目的,缓解芯片资源紧张(这里以32位编译器转载 2017-01-12 16:22:17 · 699 阅读 · 0 评论 -
混合编译:c++文件调用c文件变量和函数、c文件调用c++文件变量和函数
1.c++文件调用c文件变量和函数前言:以前见到extern "C"这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。首先,为什么要使用extern "C"修饰符?C++调用其它语言的函数,由于编译器生成函数的机制不一样,所以需要经过特殊处理,才可以调用。调用C语言的函数,需要在函数声明的地方语句extern "C"。如果不使用该语句,在链接的时候,编译器就会报以下这转载 2016-12-02 19:13:37 · 879 阅读 · 0 评论 -
delete一个指针之后,要记得设置为NULL
本文转载自易醉《delete一个指针之后,要记得设置为NULL》众所周知,最开始我们用new来创建一个指针,那么等我们用完它之后,一定要用delete将该指针删掉。但是,值得注意的是,难道就仅仅是删除这个指针这么简单的么?下面,我们用一个程序来说明这个问题:?1234567891011121314转载 2016-12-09 11:33:51 · 475 阅读 · 1 评论 -
调试技巧之调用堆栈 - Call stack
简单介绍 调试是程序开发者必备技巧。如果不会调试,自己写的程序一旦出问题,往往无从下手。本人总结10年使用VC经验,对调试技巧做一个粗浅的介绍。希望对大家有所帮助。 今天简单的介绍介绍调用堆栈。调用堆栈在我的专栏的文章VC调试入门提了一下,但是没有详细介绍。 首先介绍一下什么叫调用堆栈:假设我们有几个函数,分别是function1,function2,functi转载 2016-11-07 19:53:08 · 1520 阅读 · 0 评论 -
static静态变量生命周期
static生命周期2011-07-15 16:01静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而转载 2016-11-17 20:23:48 · 530 阅读 · 0 评论 -
内存中常见异常值的解释(比如0xcccccccc、0xcdcdcdcd和 0xfeeefeee 异常值 )
* 0xcccccccc : Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory* 0xcdcdcdcd : Used by Microsoft's C++ debugging runtime library to mark uninitialised heap memory转载 2016-11-17 20:25:14 · 471 阅读 · 0 评论 -
关于malloc(0)
问题:char* ptr = malloc(0*sizeof(char));if(NULL == ptr) printf("got a NULL pointer");else printf("got a Valid pointer");请问:上面的程序输出为什么?在C99的标准里面解释到,如果给malloc传递0参数,其返回值是依赖于编译器的实现,但是不管返回转载 2016-11-18 20:12:52 · 332 阅读 · 0 评论 -
动态链表的创建、节点内存空间申请以及释放
1.动态链表的创建和内存申请:typedef struct _STACK{ void* data; int size; struct _STACK* next; struct _STACK* pre;} STACK;STACK *stack;STACK *_stack;void initStack(){stack = (S原创 2016-11-15 18:49:29 · 10628 阅读 · 0 评论 -
关于动态数组
有时候我们数组的个数n不确定,需要先给n赋值,而建立数组变量的时候又不支持个数为变量(不支持a[n]),这个时候就可以通过动态数组来解决,方法如下:一维#include #include int main(){int n1,i;int *array;puts("输入一维长度:");scanf("%d",&n1);array=(int*)malloc(原创 2016-11-03 20:31:28 · 423 阅读 · 0 评论 -
free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因
报错的位置void __cdecl _free_base (void * pBlock){ int retval = 0; if (pBlock == NULL) return; RTCCALLBACK(_RTC_Free_hook, (pBlock, 0)); retval = Hea转载 2016-12-05 19:08:37 · 2998 阅读 · 0 评论 -
C++模板(template)使用介绍
1.模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.float m转载 2016-12-07 17:31:10 · 621 阅读 · 0 评论 -
LeaveCriticalSection问题的解决方案
1、问题描述在VS2010执行过程之中,程序崩溃,出现了以下问题,导致程序中断。如图1所示程序报错如下所示:[cpp] view plain copy *******************************************************************************/ void __cdecl _转载 2016-11-25 19:25:45 · 2108 阅读 · 0 评论 -
知识补充:在本地和gitlab上创建新分支以及字符串strcpy和直接等于
1.在本地和gitlab上创建新分支git checkout -b fixspacequestion origin/mastergit add /.git commit -m 'fix space question'git push origin fixspacequestion2.字符串strcpy和直接等于strcpy为把一个字符串地址的内容赋值给另一个字符原创 2016-11-25 19:33:02 · 1027 阅读 · 0 评论 -
各种数据类型的取值范围
速查表:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +2147483647 (4 Bytes)unsigned int 0 ~ 4294967295 (4 Bytes)long == intlong转载 2017-02-08 19:40:06 · 1055 阅读 · 0 评论