c 编程
yuzhoudiwang
这个作者很懒,什么都没留下…
展开
-
tolower函数的用法
原型:extern int tolower(int c); 用法:#i nclude 功能:将字符c转换为小写英文字母 说明:如果c为大写英文字母,则返回对应的小写字母;否则返回原来的值。 举例: // tolower.c #i nclude #i nclude原创 2009-07-24 12:39:00 · 3670 阅读 · 0 评论 -
GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)
一、为什么需要内存对齐? 无论做什么事情,我都习惯性的问自己:为什么我要去做这件事情? 是啊,这可能也是个大家都会去想的问题,因为我们都不能稀里糊涂的或者。那为什么需要内存对齐呢?这要从cpu的内存访问机制说起. 为了了解清楚cpu的内存访问机制,昨天整晚都在查找资料,但是还是找不到很好的介绍资料.后来只是找到了相关的一些介绍的博客。 这些博客中大多都是以介绍内存对齐为主要转载 2013-10-15 08:40:10 · 872 阅读 · 0 评论 -
C/C++字节对齐详解
一.什么是字节对齐,为什么要对齐?现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定转载 2013-10-15 08:37:30 · 820 阅读 · 0 评论 -
c语言中的小括号
C语言的小括号里面表示一条语句,返回值是多条语句中最最后一条的语句的返回值;具体代码如下所示://c语言中的小括号的问题 //举例1: int a ; int b = 100; int c = 10; a = ({ \ int d = a;\ a = c; a = b*c; b*c;\ }); //举例2 int原创 2013-11-09 17:37:25 · 10234 阅读 · 0 评论 -
C 语言 可变参数
在C语言编程中有时会遇到一些参数个数可变的函数,例如printf(),scanf()函数,其函数原型为: int printf(const char* format,…),int scanf(const char *format,…);它除了有一个参数format固定以外,后面跟着的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: printf(“%原创 2014-02-17 23:49:44 · 655 阅读 · 0 评论 -
CMAKE error
今天的CMAKE中出现下面的错误:CMake Error at CMakeLists.txt:19 (TARGET_LINK_LIBRARIES): Cannot specify link libraries for target "netdetect" which is not built by this project.答案: 要将 ADD_EXECUTABLE的声明放原创 2016-12-01 13:27:13 · 2321 阅读 · 0 评论 -
libcurl错误
1. /usr/local/lib/libcurl.so.4: no version information available系统中自带了libcurl,但是自己安装了libcurl就会出现内容冲突,导致错误。把自己安装的libcurl卸载问题解决。但通过LDD命令明显可以看出执行文件链接的是自己指定的库,但是还是出现了上面的问题。至于为什么如何,以后再深究,解决问题先。LDD命原创 2016-12-01 14:00:04 · 1636 阅读 · 0 评论 -
stack smashing detected,程序段错误
今天在写程序的时候,突然出现"stack smashing detected"的错误.用经常用的调试方法,GDB,语句输出等均不能定位问题的出处.先说解决方案:出现这个问题的原因是:在程序函数中,数组越界访问,在程序运行时没出现问题,但当函数return的时候就会出现上面的错误.解决办法是:gdb, where命令定位到出错的函数,然后检查函数中数组的长度,使其满足程序的要求.参考原创 2016-12-15 16:47:05 · 55719 阅读 · 2 评论 -
库文件存,ld报错找不到
项目中遇到一个问题,库是已经编译好的库,用-L选项,编译缺提示找不到库文件,如下:not found (try using -rpath or -rpath-link)在网络上找到答案,感谢万能的google:When you see the following kind of errors during cross compilation (linking phase):ld原创 2016-12-21 18:24:44 · 3367 阅读 · 0 评论 -
open O_CLOEXEC标志
Linux中,文件描述符有一个属性:CLOEXEC,即当调用exec()函数成功后,文件描述符会自动关闭。在以往的内核版本(2.6.23以前)中,需要调用 fcntl(fd, F_SETFD, FD_CLOEXEC) 来设置这个属性。而新版本(2.6.23开始)中,可以在调用open函数的时候,通过 flags 参数设置 CLOEXEC 功能,如 open(filename, O_CLOEXE转载 2017-02-22 14:16:32 · 961 阅读 · 0 评论 -
从二叉排序树种看递归参数的传递
自从用了递归,不得不说递归是一门艺术!递归的主要思想是,模仿栈的顺序访问结构,省去了面向过程中程序设计中自下而上访问顺序中,对访问的数据结构的保存。递归调用中少补了,在各个递归函数中传递参数。本文,以二叉排序树转换为链表为例,给出了两种参数传递的方案:全局变量和参数传递;1.二叉排序树转换为链表参见微软面试100题,题1;、 2.全局变量传递递归参数 3.参数变量传原创 2013-10-06 15:49:36 · 1002 阅读 · 0 评论 -
二叉平衡树理论分析
平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1很显然,平衡二叉树是在二叉排序树(BST)上引入的,就是为了解决二叉排序树的不平衡性导致时间复杂度大大下降,那么AVL就保持住了(BST)的最好时间复杂度O(lo转载 2013-09-30 22:53:32 · 1069 阅读 · 0 评论 -
sscanf ()
sscanf 用法 名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscan转载 2009-07-24 14:51:00 · 698 阅读 · 0 评论 -
c语言 结构(struct)和 联合(union)
1. struct的巨大作用面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志。在网络协议、通信原创 2009-07-25 10:17:00 · 2321 阅读 · 0 评论 -
c语言 union
c语言 union意思?英文直译就是联合体,就是一个多个变量的结构同时使用一块内存区域,区域的取值大小为该结构中长度最大的变量的值。union myunion{char charvar;int intvar;float floatvar;}int main(){union myunion uni;printf("请输入一个字符");scanf("%c翻译 2009-07-25 10:20:00 · 5721 阅读 · 1 评论 -
内存分配 malloc()和calloc()
指针是一个非常灵活且强大的编程工具,有非常广泛的应用。大多数C程序都在某种程度上使用了指针。C语言还进一步增强了指针的功能,为在代码中使用指针提供了很强的激励机制,它允许在执行程序时动态分配内存。只有使用指针,才能动态分配内存。在程序的执行期间分配内存时,内存区域中的这个空间称为堆(heap)。还有另一个内存区域,称为堆栈(stack),其中的空间分配给函数的参数和本地变量原创 2009-07-25 16:31:00 · 2224 阅读 · 0 评论 -
#指令
# 空指令,无任何效果#include 包含一个源代码文件#define 定义宏#undef 取消已定义的宏#if 如果给定条件为真,则编译下面代码#ifdef 如果宏已经定义,则编译下面代码#ifndef 如果宏没有定义,则编译下面代码#elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码#endif 结束一个#if……#else条件编译块#原创 2009-07-25 10:23:00 · 711 阅读 · 0 评论 -
指针
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr转载 2009-07-25 10:31:00 · 639 阅读 · 0 评论 -
C语言文件包含处理
1.功能:一个源文件可将另一个源文件的内容全部包含进来2.一般形式:#include “文件名” 或 #include文件名>区别: 用尖括号时,编译器从C标准库文件所在的目录中寻找要包含的文件,这称为标准方式; 用双撇号时,系统先在用户当前目录中寻找要包含的转载 2009-07-25 10:22:00 · 3055 阅读 · 0 评论 -
c语言 链表逆置
链表逆置是笔试中的常见考题,笔者实现了两种不同的实现1.非递归实现:基本思想:用两个指针保存,当前结点的父节点(上一个结点)和子节点(下一个结点)如图1所示;改变next指针指向父节点,然后更新父节点和当前结点,如图2所示;循环指导当前结点的子节点为空,如图3所示;代码实现:/***********************************************原创 2013-09-30 09:27:21 · 1662 阅读 · 0 评论 -
平衡二叉树实现(1)
1.什么是AVL树 AVL 树是一种二叉排序树,但是它能保持自身的高度平衡,这使得的树的查找与插入都很快,当然为了维持树的平衡在树节点插入与删除过程中也要做一些维持树本身平衡的操作。AVL树是由前苏联人G.M. Adelson-Velskii and E.M. Landis 1962年共同发明的,这种结构是计算机科学中发明的第一个有自平衡特性的数据结构,有着开创意义,为后来发明的2-4树、红黑原创 2013-09-30 22:48:28 · 1050 阅读 · 0 评论 -
xxxx is deprecated
编译工程发现json_object_object_get is deprecated。最终解决,jason-c库中有声明,@deprecated Please use json_object_object_get_ex。json-c库编译的时候,设定了编译警告的声明,当调用不推荐使用的函数的时候,就会出现此警告。把函数修改为json_object_object_get_ex警告消失。原创 2017-06-02 18:24:09 · 11537 阅读 · 0 评论