河西无名式

月影星痕

C语言变长数组 struct中char data[0]的用法

摘要:在实际的编程中,我们经常需要使用变长数组,但是C语言并不支持变长的数组。此时,我们可以使用结构体的方法实现C语言变长数组。 struct MyData  {     int nLen;     char data[0]; };                  ...

2013-12-01 22:27:39

阅读数:4290

评论数:1

标准输入的原理:cin与scanf

1.cin 的处理方式 1)如果cin读取整数,会自动忽略换行和空格;遇到文件结束标记,cin  >> a返回的数false     int a;     while(cin >> a){          cout     }        ...

2014-10-11 20:49:51

阅读数:1859

评论数:0

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found 解决方法

问题重现:当我们运行某一个用C系列语言编译而成的程序的时候,可能会接收到这个错误——这个错误的意思是,没有找到GLIBC版本是3.4.14的相应C++标准库。 问题起源:首先,我们需要清楚,一个程序从被加载之后,需要进行动态链接,而动态链接,需要对应版本的glibc库。但是我们的可执行文...

2014-06-08 22:25:36

阅读数:5684

评论数:0

再论指针

我们都知道,如果想要通过函数改变一个变量,需要传入这个变量的指针。同样,想要改变一个指针变量,需要传入指针的指针。 27 PRIVATE char* i2a(int val, int base, char ** ps) 28 { 29 int m = val % base; 30...

2014-04-10 16:47:02

阅读数:935

评论数:0

C文件编译错误:数组、数据类型不完全

摘要:在编译C文件的时候,有时候经常莫名其妙遇到错误提示:“数组元素的类型不完全错误”。本文主要解释错误原理和避免方法 1.什么是不完全类型         具有不完全类型的变量可以通过多次声明组合成一个完全类型,比如数组str声明两次: char str[]; char str[1...

2014-04-07 10:28:08

阅读数:2301

评论数:0

与size_t有关的C语言编程失误——memset,memcpy系列函数使用陷阱

摘要:在对C语言进行编程时候,常常需要使用memset等函数进行数组或者结构体的初始化,然后这是一把双刃剑,很容易引发意想不到的bug。本文主要解析memset系列函数的使用陷阱。 1.sizeof初探 有如下的代码: int a[100],int *b=a; 试着回答一下这几个问题:size...

2014-01-03 11:16:01

阅读数:1547

评论数:0

EOF的含义与scanf的返回值

我学习C语言的时候,遇到的一个问题就是EOF。 它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。 比如,下面这段代码就表示,如果不是文件结尾,就把文件的...

2013-12-29 17:23:46

阅读数:6198

评论数:0

printf 系列函数 与 可变参数函数

本篇,我们主要讲解printf的系列函数:printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf 的使用,然后讲解可变参数函数的使用范围与实例。 1.C语言可变参数函数 熟悉C的人都知道,C语言支持可...

2013-12-02 14:36:29

阅读数:1749

评论数:0

gcc 提示conflicting types 之避免头文件重复包含

摘要:在编写程序的过程中,往往出现这样的情况。main.c需要包含A.h和B.h,而A.h&&B.h同时包含C.h,此时就出现问题了,C.h文件被同时包含了两次。如果其中含有某种类型的定义,必然在编译的时候引发错误:conflicting types  #incl...

2013-11-05 17:06:49

阅读数:1393

评论数:0

gcc提示:parameter has just a forward declaration

摘要:这是一条gcc编译程序之后的提示“参数仅仅拥有一个前置声明” 1.问题来源 有如下程序,我们使用gcc编译: #include 2 int fun(int i,int a;int b) 3 { 4 5 } 6 int main(int argc, char *...

2013-11-05 13:48:48

阅读数:3370

评论数:0

优化程序之——宏与内联函数

1.宏 1.1定义简介 内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编...

2013-11-05 11:13:12

阅读数:1251

评论数:1

C语言指针类型、指针大小、指针所指元素大小、指针加减运算

摘要:在C语言编程的过程中,我们经常用到多维数组,指针的加减运算等等。如果我们想把一个二维数组传递给一个函数,为什么不能用“a[][]”这样的形参模式?而把一维数组传递给函数可以用int a[]这样的形式?内核代码中,我们常常能看到,有两个page类型的结果体指针pagea和pageb,那么pag...

2013-10-28 10:49:02

阅读数:3465

评论数:0

malloc与sizeof的合用的陷阱

摘要:在编程过程中,我们经常这样运用malloc: int * myarray=(int *)malloc(sizeof(int)*length),但是你是否知道,这一句简单的代码隐含了2个陷阱? 1.关于malloc与void *指针 还是分析上述代码: 首先,malloc...

2013-10-25 15:53:10

阅读数:2804

评论数:5

C系列语言中.c&&.h文件内容的区分

摘要:在开始写C程序的时候,我们往往很纳闷程序的什么部分需要放在C文件中,什么部分需要放在h文件中。本文主要从软件工程的角度,并结合一个示例,解答这个问题,并解释为什么要这样做。

2013-10-15 14:10:55

阅读数:1421

评论数:0

google内部使用的良好编程习惯

摘要:在进行编程训练的过程中,遵循统一的编程习惯,有利于代码的易读性和维护性,从而快速提高软件编程效率。本文主要问你介绍一些常用的优良编程习惯,参考了google内部关于编程的约定文档。还是那句话,“没有最优,统一就好”。

2013-10-13 22:52:28

阅读数:2107

评论数:0

C语言编程十大建议——语法语义篇:使用脚本检查部分语义错误

1.亲核字符串、数组操作之越界与否。不然,很可能出现程序可以编译通过,但是最终却给出了错误的结果。另外指针和数组的越界访问,很容易出发segment fault 2.不要重写标准库函数,把函数名改成你自己才懂得的晦涩的名字,遵循一种统一的编程规范。 3.在书写switch case和定义相同结...

2013-10-12 16:43:36

阅读数:1254

评论数:0

使用有限状态自动机实现C语言的声明解析器

摘要:在很多的游戏编程中,我们使用了有限状态自动机作为模型。有限状态自动机作为变成模型,具有通用性好,方便理解的特点。本文主要结合前一个系列的两篇文章(1)C语言声明解析器的实现和(2)用C语言实现有限状态自动机 来说明如何用有限状态自动机模型实现一个C语言的声明解析器。

2013-10-12 15:41:10

阅读数:2245

评论数:0

宏定义和枚举类型的区别

摘要:在C语言的编程中,我们常常需要定义一些常量,此时是采用宏定义还是采用枚举类型呢?它们有哪些区别?本文主要探讨这个问题。 一、作用域对比 1.1宏定义的默认作用域为整个文件,如果定义了宏定义结尾的地方,作用域就到那个地方;这里有一个潜在的危险,如果我们的头文件中包含了宏定义,此时会导致...

2013-10-12 14:49:45

阅读数:2429

评论数:0

gdb调试命令小结_与多文件调试_远程调试

摘要:在vs2010下,我们调试起来相当方便,但是使用gdb调试的时候,却困难重重。本文主要为你介绍如何在gdb下进行调试和如何将gdb打造成一个集成的编译环境。 1.gdb命令小结 设置断点:break(b) linenum                  b  functionnam...

2013-10-11 17:34:39

阅读数:1763

评论数:0

如何学好C语言

有人在酷壳的留言版上询问下面的问题 keep_walker : 今天晚上我看到这篇文章。 http://programmers.stackexchange.com/questions/62502/small-c-projects 我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员...

2013-10-11 14:24:04

阅读数:869

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭