自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

转载 ASCII码

ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符0NUT32(space)64@96、1SOH33!65A97a2STX34"

2015-10-28 10:02:19 649

原创 函数调用时,需注意实参和形参的类型差异,类型内存存储格式的差异

问:能否像下边这样用void **指针作为参数,使函数模拟按引用传递参数吗?         void f(void **);         double *dp;         f((void **)&dp);答:不可移植,这种代码可能有效,而且有时鼓励这样用,但前提是所有指针的内部表示都是一样的,也即内存中数据存储格式一样。         C语言中没有通用指针类型,v

2015-10-27 14:01:16 1387

转载 C语言strcat()

原型:char  *strcat  ( char  *dest, const  char  *src)    用法:#include      功能:连接两个字符串;strcat()会将参数src字符串拷贝到参数dest所指的字符串尾。第一个参数dest要有足够的空间来容纳要拷贝的字符串。    说明:strcat()返回dest的字符串起始地址。    举例:

2015-10-26 11:48:45 538

原创 将第一个换行符转换成’\0’

将换行符转换成’\0’的代码实现如下:         假设字符串src中存在一个或多个’\n’字符,我们需要将第一个’\n’转换成’\0’。代码如下:          char*temp;         if((temp=strchr(src,‘\n’))!=NULL)*temp=’\0’;

2015-10-26 11:09:17 529

转载 C语言gets()函数:从流中读取字符串

头文件:#include gets()函数用于从缓冲区中读取字符串,其原型如下:    char *gets(char *string);gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取的字符串暂存在给定的参数string中。【返回值】若成功则返回string的指针,否则返回NULL。注意:由于gets()

2015-10-26 10:59:46 2728

转载 strchr函数

函数原型:extern char *strchr(char *str,char character)参数说明:str为一个字符串的指针,character为一个待查找字符。        所在库名:#include   函数功能:从字符串str中寻找字符character第一次出现的位置。  返回说明:返回指向第一次出现字符character位置的指针,如果没找到则

2015-10-26 10:56:49 434

转载 Ubuntu 13.04系统更新后状态栏消失解决

Ubuntu 13.04系统更新后状态栏消失解决 今日安装系统推荐的更新后,进入系统发现仅剩桌面和图标,左侧启动栏和顶部状态栏消失……百度得到若干各种复制粘贴的结果尝试无效后,终于是compiz更新惹的祸 1.首先打开Ctrl+Alt+T打开Terminal,安装ccsmTerminal代码  sudo apt-get install compizc

2015-10-24 23:00:15 984 1

转载 ubuntu中遇到usr bin x not found问题

(1)ubuntu启动之后进入紫色界面不动了。。解决方法:尝试了很多办法,但是还是不行,所以就只好重启,然后不断的按住shift,然后进入到恢复模式,然后选择恢复到normal boot,这个时候输入用户名,密码,就可以进入终端了。。然后在此终端上操作。。==============(2)scp传递文件的时候,总是permission denied,please

2015-10-24 22:58:52 8723 1

原创 ((condition) ? a : b) = complicated_expression是否可行

验证代码:     1  #include      2     3  int main(int argc, char **argv){     4          int a,b;     5          int c=9,d=3;//((1)?a:b)=c*d;//note1     6          *((1)?&a:&b)=c*d;//note2 

2015-10-23 15:26:18 555

转载 C语言中的类型提升——基础概念,但还有很多人搞不清

每天都会看CU的博客,尤其是CU首页上面的博客。个人感觉有很多同学并不关注基础知识,在遇到问题时,经常会舍本求末。遇到问题,总是找不到根本原因,得出了一些结论。但这些结论并不是真正的原因,整个儿过程,也把真正的原因给掩盖了。今天主要说一下C语言的类型提升的事情。下面是引用的一个例子——这个代码是从一个朋友的博文中复制过来的,但是当时这位朋友没有去说明

2015-10-23 14:45:55 2301

原创 未定义表达式

相关C语言的书籍里面说“a[i]=i++;”语句是非法的,具体如下: 问:为什么下面的代码不可以?         a[i] = i++; 答:子表达式i++有一个副作用,那就是它会改变i的值,由于i在同一表达式的其他地方被引用,因此会导致未定义的行为。无从判断该引用是旧值还是新值。注意,尽管在其他文献中认为这类表达式的行为时不确定的,但C标准却强烈声明它是未定义的 由

2015-10-22 16:21:27 1226

转载 为什么人打哈欠时会流泪 ?

困倦的时候总会打哈欠连天。哈欠一打,眼睛里总会泪水汪汪的,为什么人打哈欠时会流泪呢? 人的眼泪时时刻刻都在分泌,在眼球表面流动。可是平时分泌的泪液很少,而且是紧沿着眼球表面和眼皮里面微细空隙中流动,所以,你不会觉得泪水在流动。 然而,在你眨眼的一刹那间,这些眼球表面的泪水就被吸到眼泪的下水道——鼻泪管里去了。别小看这条不太长的细管子,它却是眼泪通到鼻腔的唯一要道。泪腺不断分泌泪水,鼻泪管不

2015-10-22 15:13:19 598

转载 C语言的枚举类型

在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 C 语言中对这样取值比较特殊的变量可以定义为枚举类型。所谓枚举是指将变量的值一一列举出来,变量只限于列举出来的值的范围内取值。 定义一个变量是枚举类型,可以先定义一个枚举类型名,然后再说明这个变量是该枚举类型。例如: enum weekday{sun,mon,tue,wed,thu,fri

2015-10-22 14:50:28 403

转载 不同变量类型的不同输出格式

符号属性     长度属性     基本型     所占位数     取值范围       输入符举例      输出符举例--            --          char         8         -2^7 ~ 2^7-1        %c          %c、%d、%usigned        --          char         8

2015-10-22 14:43:49 1214

转载 联合体(union)的使用方法及其本质

1.联合体union的基本特性——和struct的同与不同union,中文名“联合体、共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量。不过区别也挺明显:结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用,全

2015-10-22 12:35:03 501

原创 如何确定域在结构中的字节偏移量,怎样用结构成员名访问对应成员?

ANSI C在中定义了offsetof()宏,用offsetof(struct_type,name)可以计算出成员name在结构struct type中的偏移量,如果处于某种原因,需要自己实现这个功能,可以使用下面这样的代码:         #define offsetof(type, name) (size_t) ((char*)&((type *)0)->name-(char *)((t

2015-10-22 11:01:34 790

转载 C语言 文件的概念与操作(打开、读写和关闭等)

文件的基本概念  所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。  普通文件是指驻留在磁盘或其它外部介质上

2015-10-21 14:57:21 1225

原创 针对struct name结构做的简要变幻

问:在代码里遇到这样的结构:struct name{         intnamelen;         charnamestr[1];};在后续的代码里使用内存分配技巧使数组成员用起来像有多个元素,namelen记录了数组元素的个数,感觉有些不合理,但是代码里确实存在,该如何解释? 答:不清楚这种做法的合法性,但是这种技术确实存在,但又不符合C语言的规定,下面看几

2015-10-21 10:37:06 1380

原创 C语言标识符的3大属性

2015-10-20 14:37:17 779

原创 C语言中用什么方法实现抽象数据类型最好?

问:C语言中用什么方法实现抽象数据类型最好?答:用户使用指向未公开定义的结构类型的指针绝对是个好办法。换言之,用户只需要使用结构的指针,如不需要知道结构的成员是什么,如调用参数或返回值为该结构指针的函数;只要不使用->、sizeof()、操作符及真实结构的声明,C语言就可以正确的处理不完全类型的结构指针;只有在实现抽象数据类型的原文件中才需要此范围内的完整声明。

2015-10-20 12:42:08 1825

原创 Linux 通用中断子系统

简介:中断,顾名思义,中途打断CPU正在处理的任务,转而去执行紧急事务。中断既有硬件支持,也有软件控制,下面就开始中断的介绍。一、中断硬件框架结构         中断的硬件框架组成有 设备、中断控制器、CPU。终端硬件框架如下:1、 设备:设备是发起中断的源头,当设备需要请求某种服务时,会发起一个中断信号,通常,该信号会通过中断线发送至中断控制器处理。设备都是一些设备的控

2015-10-20 10:27:19 1896

原创 运算符优先级查询表

优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[整型表达式]左到右 ()圆括号(表达式)/函数名(形参表) .

2015-10-19 19:28:23 461

原创 函数类型,函数名是函数指针吗,函数的强制类型转换

问一:函数有类型吗?答:有,举两个例子即可明白:例1:char func()的类型为char (*)() 例2:int * func1(char a)的类型为int *(*)(char)问二:函数名是函数指针吗?答:个人认为函数名同数组名一样都是个常量,表示函数体的首地址,并不是完全意义上的函数指针。问三:函数的强制类型转换答:可以看如下代码:void fu

2015-10-19 19:16:35 3415

转载 函数指针的赋值与调用

问:先定义了个函数:int function(int a, int b){ ..........}main函数里面有个函数指针问题1:那么下面两种对函数指针的赋值哪个是正确的,还是都可以?int main(void){ A: int (*FP)(int, int) = function; B: int (*FP)(int, int) =

2015-10-19 18:34:42 19023 1

转载 typecheck(type,x) 作用

在kernel 2.6.30 的typecheck.h源码中有如下定义#define typecheck(type,x) /({        type __dummy; /        typeof(x) __dummy2; /        (void)(&__dummy == &__dummy2); /        1; /})这个有什么作用呢?下面举例来

2015-10-16 18:39:55 780

原创 "typedef char * pc; const pc a;“ 为什么是a而不是a所指向的字符为const

问:声明如下:         typedefchar * pc;         constpc a;为什么是a而不是a所指向的字符为const? 答:typedef的替换并不是简单的替换,在声明中,         constpc a;a被声明为const的原因跟const inti中的i被声明成const的原因一样,a的声明不会“深入”typedef的内容来发现涉

2015-10-16 14:20:26 534

原创 为什么不能向接受const char **的函数出入char ** ?

问:为什么不能向接受const char **的函数传入char **? 答:定理:允许向接受const T的指针的地方传入T型指针,任何类型T都适用。但是,这种允许,也即在被限定的指针类型上轻微不匹配的规则却不能递归应用,只能应用在最上层。由此就可以回答上面的问题了,因为const char **是const char的指针的指针,所以这个规则在这时就不适用了。         co

2015-10-16 14:04:11 7131

原创 const char *p/char const *p/char * const p有何区别

const char *p、char const *p和char * constp的区别是什么? 前两者可以互换,它们声明了指向字符常量的指针,这意味着不能修改它所指向的字符的值;“char * const p”声明了指向字符的常量指针,这意味着不能修改该指针。 验证代码: 1 #include   2   3int main(){  4  5       

2015-10-16 11:52:37 441

原创 const限定符修饰的常量变量能否作为数组声明的维度、case行标或其他类似场景?

看有些书籍上说,下面的使用方法是不可以的:                   constint n=5;                   inta[n];书上是这样解释的:const限定词真正的含义是“只读”,用它限定的对象在运行时是不可以赋值修改的,对象可以是基本类型,也可以是指针。因此用const限定的对象并不是完全意义上的常量,不能用作数组维度、case行标或类似环境。在这

2015-10-16 11:07:12 2197

原创 C语言之typedef int (*funcptr)()

问:“typedef int (*funcptr)();”是什么意思?    答:它定义了一个类型funcptr,表示指向返回值为int型,参数未指明的函数指针,它可以被用来声明一个或多个函数指针,例如:            funcptr func1, func2;     这个声明等价于下面写法的函数指针声明           int (*func1)(), (*func2

2015-10-14 23:28:22 5915

转载 C语言中void具体有什么作用

1.概述  许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。2.void的含义  void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。  void几乎只有“注释”和限制程序的作用,因

2015-10-14 14:20:02 1147

转载 关键字 __typeof__

__typeof__(var) 是gcc对C语言的一个扩展保留字,用于声明变量类型,var可以是数据类型(int, char*..),也可以是变量表达式。define DEFINE_MY_TYPE(type, name) __thread __typeof__(type) my_var_##nameDEFINE_MY_TYPE(int, one); //It   is 

2015-10-14 14:18:54 893

转载 大端序与小端序

何为大端序,小端序?简单点说,就是字节的存储顺序,如果数据都是单字节的,那怎么存储无所谓了,但是对于多字节数据,比如int,double等,就要考虑存储的顺序了。注意字节序是硬件层面的东西,对于软件来说通常是透明的。再说白一点,字节序通常只和你使用的处理器架构有关,而和编程语言无关,比如常见的Intel x86系列就是小端序。Big-endian(大端序)数据的高位字节存放在地址的低端

2015-10-12 19:36:36 452

转载 ARM工作模式

一、存储器格式(字对齐):Arm体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。存储器格式        1、大端格式:高字节在低地址,低字节在高地址;        2、小端格式:高字节在

2015-10-10 20:14:05 418

转载 中断-整体流程

文章疏理自>http://blog.csdn.net/droidphone/article/category/1118447感谢以上两位大侠的创作,读者亦可查阅原文.读完此文你可以了解到:1. 中断的处理流程2. 中断在linux中的实现3. arm架构对中断做的处理4. 电平/边沿触发时中断控制器所做的动作中断控制器PIC,与CPU连接,然后产生中断的

2015-10-10 20:11:40 487

转载 内存对齐

一.内存对齐的初步讲解内存对齐可以用一句话来概括:“数据项只能存储在地址是数据项大小的整数倍的内存位置上”例如int类型占用4个字节,地址只能在0,4,8等位置上。例1:#include struct xx{        char b;        int a;        int c;        char d;};int main()

2015-10-09 18:44:27 322

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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