自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++标准的关键字

今天开始,本人将从C语言的学习转向C++的学习,作为开篇先谈谈关键字。C语言当中的关键字有:auto break case char const continue default do double else enum extern float for gotoif int long register return short signed sizeof static struct s

2015-04-13 09:21:57 568

转载 几种C语言优化代码技巧

以下内容摘自李亚锋先生的《经典C面试真题精讲》1.结构体设计为成员最长类型长度的整数倍;2.减少函数参数的个数,不需要返回值的函数定义为void类型;3.if...else....多条件分支语句中,把出现频率高的条件放在前面;4.同时声明多个相同类型变量优于分别单独声明变量;5.减少定义全局变量;6.使用#define定义常量和小的函数实现;7.有些情况嵌套汇编语句效率

2015-04-12 11:13:34 520

转载 浅谈gets()和fgets()

以下部分内容摘自于李亚锋先生的《经典C面试真题精讲》在linux环境下,当我们使用gcc编译时,发现使用gets()函数的程序无法正确运行,在编译时会出现警告。C语言早期的时候,当从标准输入读入一个字符串的时候使用的是gets()函数,但他不够安全容易产生栈溢出问题,目前已被fgets()函数取代。#include char *fgets(char *s,int size,FI

2015-04-12 10:50:15 481

转载 宏定义中的#和##

在宏定义中经常出现#和##两种操作,#用来把参数转换成字符串,##则用来连接前后连个参数,把他们变成一个字符串;#include #define test(n) printf("test("#") = %d\n",val##n)intmain(void){int val3 = 10;int val8 = 23;test(3);test(8);

2015-04-11 11:41:13 358

转载 浅谈volatile

int i;i = *(volatile unsigned long *)0xfff40080;用volatile关键字修饰变量或地址,相当于告诉编译器,这个修饰的值或地址指向的值会随时发生变化,每次使用时都需要去内存里重新读取它的值。volatile对应的变量可能在你的程序本身不知道的情况下发生改变比如多线程的程序,共同访问的内存当中,多个程序都可以操纵这个变量你自己的程序,是无法判

2015-04-11 11:03:55 402

原创 C语言中与调试相关的宏

以下内容摘自李亚锋先生的《经典C面试真题精讲》:#include void testMacroDefine(){printf("%s, %d, %s\n",__FILE__,__LINE__,__func__);printf("%s, %s\n",__DATE__,__TIME__);}intmain(void){testMacroDef

2015-04-07 15:24:32 365

转载 内存泄露之退出函数路径

以下内容摘自李亚锋先生的《经典C面试真题精讲》Info1 = malloc(sizeof(struct TableInfo));if (!Info1){printf("Could not allocate memory\n");return -1;}Info1->Instances = 2;Info1->NextInstance = 1;Info

2015-04-05 09:22:33 377

转载 C语言常见的内存分配

本篇博客内容摘自《经典C面试真题精讲》C语言的内存分配区域主要有以下五个:1.栈区:在执行函数时,函数内部局部变量(不包含static变量)、函数返回值的存储单元在栈上创建,函数执行结束时这些存储单元自动被释放;2.堆区:即动态内存分配,程序在运行的时候用malloc(calloc、realloc等)申请的内存,程序员自己负责用free释放;3.静态存储区:该内存在程序编译的时候就

2015-04-04 16:03:30 438

原创 C语言指针学习 一

1.指针就是地址,变量的指针就是变量的地址,存放地址的变量就是指针变量。 2.利用间接访问的方式访问变量的时候,必须借助指针变量来存放数据的地址。需要说明的是指针类型是对所有类型的指针的总称,指针的类型是指针所指对象的数据类型。一般来讲,指针可以指向所有类型的数据,主要包括以下几种:        第一种:指向变量的指针:变量的指针(存变量的地址)        第二种:指向数组的指针

2015-04-03 17:33:33 361

原创 C语言指针学习 二

1. C语言中,实参变量与形参变量之间的数据传递,是单向的“值传递”方式。指针变量做函数参数也要遵循这一规则。调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。我们知道函数的调用可以得到一个返回值,而运用指针变量做参数,可以得到多个变化了的变量值。2.在主调函数中声明所要求的数目的变量,然后把变量的地址作为实参     在定义调用函数的时候,声明与实参数目、类型、位

2015-04-03 17:33:32 404

原创 C语言数组学习心得(一)

1.用数组名作为函数参数时,要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明2.用数组名作为函数参数,应在主调函数和被调函数中分别定义数组,且数据类型必须移植,否则结果将出错,形参数组中的[]必不可少,以表明该形参是一维数组3.c编译系统对形参数组大小不做检查,所以形参数组可以不指定大小。 如果指定形参数组的大小,则实参数组的大小必须大于形参数组,否则因形参数组的部分元

2015-04-03 17:32:16 9195

转载 typedef 和 #define

1.#define是一个预处理指令,在预编预处理时进行简单的替换,不作正确性检查;2.typedef是在编译时处理的,typedef不是简单的替换,而是采用如同定义变量那样的方法来声明一种类型;3.typedef一个比较难且常用的用法可以参考以下内容。http://blog.chinaunix.net/uid-26963688-id-3466311.html

2015-04-03 17:22:51 370

转载 例谈sizeof函数

下面的内容摘自李亚锋先生的《C面试真题精讲》:#include voidfsizeof(int a[][3]){printf("%d\n",sizeof(a));}intmain(void){int a[2][3] = {{101,102,103},{104,105,106}};fsizeof(a);return 0;}

2015-04-03 15:56:07 373

转载 《C面试真题精讲》程序摘录

#include #include //#include #if 0char*mystrcpy(char *dest,char *src){//char *p = dest;char *p;p = dest;while (*src != '\0'){*dest++ = *src++;printf("%s\n",dest);

2015-04-03 11:04:10 426

原创 例谈字符串与指针

在学习C语言的过程中,最重要的是多练,但在多练的过程中,我们是有必要去弄懂别人程序的思想,理清思路,如果我们每天只是盲目的敲代码,去拼代码量,那么到最后会发现自己除了键盘敲击速度提高了,对于C语言的认知却没有任何加深。古人有云:熟读唐诗三百首,不会作来也会吟,对于语言的学习我们要多读多练多想,只有量的积累才会达到质的改变。#include #include char*mys

2015-04-03 10:35:15 439

原创 指针和字符串

指针的用法是极其丰富又比较复杂的,在这里简单谈一下指针和字符串。1.char p1[] = "pointer with string!"、char *p1 = "pointer with string!"和char *p1;p1 = "pointer with string!"是等效的,我们知道C语言当中是没有字符串变量是没有办法直接定义的,所以我们平时定义字符串变量可以通过两种途径,一种是通

2015-04-02 17:14:40 403

原创 VM虚拟机下的ubuntu无线网络连接问题

由于学习需要前段时间在虚拟机下安装了ubuntu系统,在安装过后的第一次使用时可以连接网络使用,再次使用时就无法连接网络,在网上搜索了一些解决方案,最后问题得以解决,下边我将会将问题的解决过程描述出来。本人要连接的是无线网络,下述内容只供参考之用。第一步:第二步:第三步:第四步:第五步:至此,所有步骤完成。

2014-12-29 12:09:58 1576

原创 《嵌入式linux系统工程师实训教程》读书笔记

文件在linux系统学习过程中占据着极其重要的地位,而在学习文件相关知识的过程中”一切皆文件“的思想是核心思想。下面是文件相关知识的一些浅显的总结:首先文件的种类分为普通文件、目录文件、设备文件、管道文件、套接字文件和符号链接文件;普通文件(regular file):普通计算机用户看到的文件,通常驻留在磁盘当中,普通文件常分为二进制文件、文本文件;目录文件(directory):主要

2014-12-25 20:54:53 781

原创 《嵌入式Linux系统工程师实训教程》读书笔记(二)

Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来。AT&T的贝尔实验室改进后形成的“system v ipc”,该通信进程局限在单个计算机内,而BSD(加州大学伯克利分校)跳过该限制,形成了基于套接口(socket)的进程间通信机制,Linux则把两者继承下来。最初UNIX IPC包括管道、FIFO、信号,system V IPC包括system v消息队列、system

2014-12-17 15:17:32 809

原创 读《嵌入式Linux系统工程师实训教程》笔记(一)

本文内容主要是《嵌入式Linux系统工程师实训教程》的读书笔记。_exit()和函数exit()是一对相似的函数:#define __NR__exit   __NR_exit /* 参考include/asm-i386/unistd.h */这里__NR_是在Linux源码中为每个系统调用加上的前缀,请注意第一个exitl()前有两条下划线,第二个exit()前有只有一条下划线#i

2014-12-17 14:00:27 712

原创 函数exit()和_exit()

本文内容主要是《嵌入式Linux系统工程师实训教程》的读书笔记。_exit()和函数exit()是一对相似的函数:#define __NR__exit   __NR_exit /* 参考include/asm-i386/unistd.h */这里__NR_是在Linux源码中为每个系统调用加上的前缀,请注意第一个exitl()前有两条下划线,第二个exit()前有只有一条下划线#i

2014-12-17 13:23:03 497

转载 C语言学习之typedef

(本文部分内容摘自于《C语言宝典》,部分内容摘自网上)用typedef只是对原有的类型起个新名,并没有生成新的数据类型;typedef 不能用于变量的定义;typedef 并不是简单的字符串替换,与#define的作用不同;typedef定义类型别名可以嵌套进行;用typedef定义的类型类型名往往用大写字母表示,并单独存于一个文件中;利用typedef定义类型名有利于程序

2014-11-30 20:27:59 521

转载 读《鸟哥的私房菜》第20章笔记(一)

Linux不可随意关机,否则容易造成文件系统损坏或者无法启动的问题;启动流程主要是BIOS、MBR、Loader、kernel+initrd、/sbin/init等流程;loader具有提供菜单、加载内核文件、转交控制权给其他loader等功能;initrd可以提供内核在启动过程中所需要的最重要的模块(通常是与磁盘及文件系统有关的模块);init 的配置文件为/etc/initab

2014-11-30 17:14:43 498

空空如也

空空如也

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

TA关注的人

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