自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 内敛函数inline

函数的引入可以减少程序的目标代码,实现程序代码的共享。函数调用需要时间和空间开销,调用函数实际上将程序执行流程转移到被调函数中,被调函数的代码执行完后,再返回到调用的地方。这种调用操作要求调用前保护好现场并记忆执行的地址,返回后恢复现场,并按原来保存的地址继续执行。对于较长的函数这种开销可以忽略不计,但对于一些函数体代码很短,又被频繁调用的函数,就不能忽视这种开销。这个时候就需

2016-11-30 16:55:45 755 1

原创 typedef与#define的区别

1.typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。2. #define是预处理指令。在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如: typedef int INTEGER;  这以后就可用INTEGER来代替int作

2016-11-29 17:23:07 500

原创 链式栈和链式队

1.链式栈:栈的链式存储结构, 简称链栈。/*链栈的结构代码*/ typedef struct stackNode{SElemType data;struct stackNode *next;} stackNode ,*LinkStackPtr;typedef struct LinkStack{LinkStackPtr  top;int count;

2016-11-28 22:03:20 658

原创 顺序栈和顺序队列

1.栈的定义:栈是限定在表尾进行插入和删除操作的线性表;把允许插入和删除的一端称为栈顶(top), 另一端称为栈底(bottom), 不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表。栈的插入操作,叫做进栈,也称为压栈,入栈。子弹入弹夹;栈的删除操作,叫做出栈,也有的叫做弹栈。(1)顺序栈的进栈操作:/*插入元素e为新的栈顶元素*/ Status Pu

2016-11-27 21:19:34 1258

原创 顺序表和链式表

1.数据元素之间不是独立的,存在特定的关系,这些关系即结构。所以数据结构是指数据对象中数据元素之间的关系。数据结构分为逻辑结构和物理结构。逻辑结构分为:集合结构:数据元素之间没有特别的关系,仅同属相同集合。线性结构:数据元素之间是一对一的关系。树形结构:数据元素之间存在一对多的层次关系。图形结构:数据元素之间是多对多的关系。物理结构分为:顺序存储结构:将数据存储在地

2016-11-26 23:11:40 4074

原创 单链表的创建,插入,删除以及逆序

#include /*结点定义,下面定义lnode是结点的类型,linklist是指向lnode类型结点的指针类型。*/typedef int datatype;typedef struct node{datatype data;struct node *next;}lnode,*linklist; /*建立一个空的单链表。*/ linklist creat_l

2016-11-25 20:06:38 538

原创 c语言笔面试题错题解析5

1.signed char a = 0xe0;    unsigned int b= a;    unsigned char c= a;下面说法正确的是?A (a>0)&&(b>0)为真B  c== a 为真C  b 的16进制为0xffffffe0D  都不对有符号数最高位为1,所以a为负数;负数原码转补码是符号位不变,其他各位取反,然后加1; 无符号数的

2016-11-24 17:48:32 1481

原创 编译预处理

我们知道在编译过程中的预处理阶段会进行头文件展开,宏替换以及条件编译。1.头文件展开:首先是头文件展开,头文件的前面都有#符号,其实是理指令。理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面是部分预处理指令:

2016-11-23 22:34:56 530

原创 可变参函数

C语言编程中有时会遇到一些参数个数可变的函数,例如,printf( )函数的函数原型为int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式。printf("%d",i); printf("%s",s); printf("th

2016-11-22 20:45:26 309

原创 函数指针与函数数组指针

1.函数指针:函数指针就是指向函数的指针可以作为函数的形参,能够提高代码的扩展性。在这里我们需要知道回调函数:回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。回调函数的应用是非常广泛的。通常,当我们想通过一个统

2016-11-21 22:26:50 306

原创 c语言中的几个关键字

1.register:请求编译器尽可能的将变量存放在cpu的寄存器中。用register关键字可以省去cpu从内存中提出数据的时间,提高程序的执行效率。但是由于cpu中的寄存器是有限的,所以不可能将所有的变量都放在cpu中,所以我们把经常访问的变量用register修饰。注意事项:(1)register只能修饰局部变量,不能修饰全局变量和函数。(2)register修饰的变量不

2016-11-20 19:20:14 1433

原创 数组与指针的区别及函数的调用

1.数组与指针的区别:(1)空间分配指针是动态分配空间,通过malloc在堆上分配所需要的空间,分配的空间不一定连续,在使用完之后需要调用free()来释放分配空间。而数组是静态分配空间,在全局变量区或者栈上分配空间,分配的空间是连续的,局部变量在生命周期结束后自动释放,全局变量在程序结束完自动释放。(2)访问效率指针是通过地址间接访问,而数组是直接访问数值。因此指针的访问

2016-11-19 19:08:21 960

原创 c语言笔面试题错题解析4

1.#include char fun(char *c){if(*c='A'){    *c-='A' - 'a';}return *c;}main(){char s[81],*p=s;gets(s);while(*p){    *p = fun(p);    putchar(*p);    p++;}printf(:\n

2016-11-18 19:21:32 887

原创 数组指针

数组指针的定义:void main(){int a[2][2] = {1,2,3,4};int (*p)[2];p = a;}上述代码中p就是一个数组指针变量,它指向一个数组。那么我们需要做的就是要弄明白数组名与数组指针变量之间的关系。我们来想一下,a,a[0],a[1],p,a+1,a[0]+1,p+1都代表什么含义。(1)a:a是一个数组名,类型是指向一维数

2016-11-17 18:33:06 483

原创 有关字符串的几个函数

1.strlen      测量字符串的长度#include #define N 100int my_strlen(char *str){    int count = 0;    while(*str != '\0')    {        count++;str++;    }    return count;}int main()

2016-11-16 18:53:47 470

原创 指针与数组

我们知道当定义一个变量后,系统会为这个变量分配内存空间,那么变量名就是这个空间的名字,这个空间可以保存值,这个空间有地址。如:int num = 5;这是一个整型变量,系统为这个变量分配了内存空间,num就是就是这个内存空间的名字,5就是保存在这个空间里的值,这个空间有地址。num++:就是num对应的空间里的值加1,即5+1。int *p = #这是定义了一个指针变量

2016-11-15 14:04:01 430

原创 malloc() ralloc() calloc()

1.malloc()(1)函数原型void *malloc(unsigned int num_bytes);(2)功能请求系统动态分配num_bytes个字节的空间,如果分配成功则返回第一个字节的地址,并且可以进行强制类型转换,告诉系统分配空间中存储的是那种类型的数据。否则返回空指针NULL。(3)当内存不在使用时,要用使用free函数将内存释放。2.rallo

2016-11-14 19:33:55 506

原创 野指针

所谓野指针就是没有进行初始化的指针,系统会默认随机对其进行初始化,当我们调用这个指针的时候就会发生内存泄露,造成段错误。所以我们要尽量避免野指针。如何避免野指针呢?1.我们要有良好的编码习惯,当指针不确定指向时,将指针初始化为NULL。char *ptr =NULL;NULL   //#define  NULL (void *) 0NULL是内存零地址,而且不能对零地址对应的内

2016-11-13 21:18:10 297

原创 c语言笔面试题错题解析3

1.下面两个结构体在#pragma pack(4)和pragma pack(8)的情况下,结构体的大小分别是:struct One{double d;char c;int i;}struct Two{char c;double d;int i;}许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(

2016-11-12 14:36:13 731

原创 c语言中i++与++i的区别及运行效率

在c语言我们会经常把i++与++i弄混淆。i++    是先使用,再自加(其自加是在遇到结束标志时才会进行)即a = i;i=i+1;++i    是先自加,再使用即 i=i+1; a= i;例如以下程序:#include int main(){int i = 2;int num;num = (++i)+(++i)+(++i)+(++i);print

2016-11-11 19:39:29 16194 10

原创 c语言笔面试题错题解析2

1.程序段的执行结果是:#include using namespace std;void func1(int &x){x++;}void func2(int x){x++;}int main(){int abc = 100; xyz = 13;func1(xyz);abc = xyz;func2(abc);printf("%d\

2016-11-10 18:38:04 1098

原创 scanf函数中的格式字符串及注意事项

scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数的一般形式为:  scanf(“格式控制字符串”, 地址表列);格式字符串的一般形式为:%[*][输入数据宽度][长度]类型。其中有方括号[]的项为任选项。其各项意义为:1.类型:表示输入数据的类型 d

2016-11-09 17:37:39 7394 2

原创 程序题

输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果提示:0 ^ 0 = 0; 1 ^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;#include void  int2bin(int a){    int i;    for(i = 0; i     {

2016-11-08 21:53:27 365

原创 格式化输入与输出

在c语言的学习中,永远少不了两个函数,那就是scanf 和 printf 函数。scanf 其功能是按指定的格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束。其格式为:scanf(“格式控制串”,地址表)         scanf(“%d”,&num);地址表:就是变量的地址,常用取地址运算符&。scanf是一个行缓冲格式输入函数,当我们遇到这样的情况,int n

2016-11-07 15:08:51 1674

原创 位操作运算符

1.按位与运算符:按位与运算符“&”是双目运算符。其功能是参与运算的两个数字对应的二进制位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。例如,9&5可写算式如下:00001001(9的二进制补码)&00000101(5的二进制补码)00000001 (1的二进制补码)0000 10010000 01010000 0001 = 1

2016-11-06 19:56:20 888

原创 字节长度与数据溢出

字节长度就是一个变量所占的内存空间的大小。数据有着不同的数据类型,不同的数据类型会分配不同的空间大小。在c语言中有字节,半字,字三种存储数据的单位,其关系是1个字=4个字节=32位,一个半字=2两个字节=16位,一个字节=8位。int                  4 字节                      char                 1字节short    

2016-11-05 20:59:30 1817

原创 gdb中list命令使用

在gdb调试器中list命令语句是列出源码。#include #define N 100int main(){    int i;    int j;    int n;    int k = 1;    int a[N][N];    printf("please input n:");    scanf("%d",&n);

2016-11-04 19:01:22 9044

原创 c语言中的局部变量与全局变量

我们知道函数中的形参变量只有被调用的时候才分配内存单元,调用结束立即释放。这说明形参变量只有在函数内部才有效,离开函数就不能使用了。这种变量的有效性范围叫做变量的作用域。c语言中的变量按作用域范围可以分为局部变量和全局变量两种。1.局部变量变量在函数内部定义,则变量具有从定义位置开始到函数结束为止的局部作用域。如果变量在某个复合语句内定义,变量具有从定义位置开始到复合语句结束为止的局部作用

2016-11-03 16:44:36 1660

原创 头文件与库的区别

昨天突然问了一下什么是头文件,我一听就傻了,虽然上课的时候老师在讲编译的四个过程的时候说了一下,但是还是不太理解,我们知道编译过程中的预处理阶段会进行头文件展开,宏替换以及条件编译。那么什么是头文件呢?百度百科是这样定义的:头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。 .c

2016-11-02 17:16:29 10271 2

原创 c语言笔面试题错题解析1

1.以下程序输出结果是?#include main(){    char c[2][5]={"6934","8254"},*p[2];    int i,j,s=0;   for(i=0;i   p[i]=c[i];   for(i=0;i   for(j=0;p[i][j]>0&&p[i]j]s=s*10+p[i][j]-'0';printf("%d\

2016-11-01 21:48:35 1382 1

空空如也

空空如也

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

TA关注的人

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