- 博客(115)
- 收藏
- 关注
转载 strcpy,sprintf,memcpy的区别
strcpy 函数操作的对象是字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。sprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字符串或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。 memcpy 函数顾名思
2016-12-21 22:38:18 428
转载 数组和链表的区别
数组与链表的区别 1.基于空间的考虑 数组的存储空间是静态,连续分布的,估计过大造成空间浪费,估计太小又将使空间溢出机会增多。 而链表的存储空间是动态分布的,只要内存空间尚有空闲,就不会产生溢出; 链表中每个节点除了数据域外,还有指针域,存储密度小于1 (数组为1), 存储空间利用率就越高。 2. 基于时间的考虑 数组中任意节点都可以在O(1
2016-12-20 23:59:10 2749
转载 黑马程序员_一个小程序的发现-关于#define与C的内存
看过C部分#define的视频教程油然而生的两个问题:问题1:#define到底存在程序的哪个区?自己写了一个小程序验证一下第一个问题。程序代码:[cpp] view plain copy "font-size:18px;">#include #include #define kMAX 100 typed
2016-12-19 22:32:01 501
转载 【Linux C】scanf和Linux C中的gets函数警告
在C语言中,字符数组的输入有两种方法: ①逐个字符输入 ②一次性输入整个字符串1.逐个字符输入 使用“%c”,例如: 2.一次性输入整个字符串 使用“%s”,例如: 需要注意的是,在这里定义的str数组的长度为10,则输入的字符串的长度应小于定义的长度10.若输入hello,则系统自动在输入的hello后面加一个’\0’
2016-12-18 22:14:45 434
转载 Linux下的段错误分析
2. 段错误产生的原因 2.1 访问不存在的内存地址#include#includevoid main(){int *ptr = NULL;*ptr = 0;}2.2 访问系统保护的内存地址#include#includevoid main(){int *ptr = (int *)0;*ptr = 100;}
2016-12-17 23:47:51 491
转载 C语言——把自己编程实现字符串函数strstr
[csharp] view plain copy char * my_strstr(char *str, char *ptr) { if(str == NULL || ptr == NULL) return NULL; int i; int j; int flag = 0; for
2016-12-16 22:53:27 573
转载 远指针和近指针,巨指针
char near p; /定义一个字符型“近”指针*/ char far p; /定义一个字符型“远”指针*/ char huge p; /定义一个字符型“巨”指针*/首先要从8086处理器体系结构和汇编渊源讲起。大家知道,8086是一个16位处理器,它设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段
2016-12-15 22:29:21 850
转载 C语言数组与指针详解
好多同学都说:“老师,我看到指针就晕!”,说实话,见过晕血的,见过晕车的,晕指针的到是第一次听说! 我们先来分析一下晕车的原理,再来对比一下为什么晕指针。 晕车,是因为耳朵里的一个器官对外界的振动太敏感,导致身体调节功能紊乱,系统不能正常工作,轻则,晕点,中则,吐点,重则,“重启”(倒地)。时间长了,知道自己晕车,于是,看到公交车,TAXI,火车,自行车,都
2016-12-14 22:16:16 476
原创 操作系统实验2进程调度
[cpp] view plain copy#include #include struct node { int pid;//进程id号 int prio;//进程优先级 int runtime;//进程运行的时间 int alltime;//
2016-12-13 22:47:03 4514
转载 Union和Struct
联 合(union) 1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量。下例表示
2016-12-12 22:32:55 296
转载 struct 成员的对齐方式
//用一个宏定义FIND求结构体struct s中某个成员变量member相对struct s的偏移量.//思考:若struct s的地址为0,则其成员member的地址就是其相对于s的偏移量//扩展: sizeof(struct s) 不一定等于 sizeof(struct s中的每一个成员)的和// 结构体大小不仅由成员的大小决定(sizeof(member)),而且还要
2016-12-11 21:42:52 359
原创 malloc最大内存申请量
#include #include unsigned maxinum = 0;int main(){ unsigned blocksize[] = {1024 * 1024,1024,1}; int i,count; for(i = 0; i { for(count = 1;;count++)
2016-12-10 23:27:57 713
转载 C语言——strlen(a)的值为多少
[csharp] view plain copy #include "stdio.h" #include "string.h" int main() { char a[1000]; int i; for(i=0; i { a[i] = -1-i; } printf("%d",strlen(a))
2016-12-09 23:32:24 2860
转载 静态库与动态库的区别
静态库与动态库的区别?静态库: 之所以称为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。 (1)静态库对函数库的链接是放在编译时期完成的。程序在运行时与函数库再无瓜葛,移植方便。 (2)它比较浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件。 (3)另一个问题是静
2016-12-08 22:44:03 285
转载 C语言——printf函数的结合顺序
下面用一个例子来看:int arr[] = {6,7,8,9,10};int *ptr = arr;*(ptr++)+=123;printf(“ %d %d ”, *ptr, *(++ptr));分析:int *ptr = arr;此时指针指向第一个元素,即6*(ptr++)+=123;此时指针ptr自加表示地址加一,指向第二个元
2016-12-07 22:35:33 998
转载 C语言面试题
一、填空选择题 1、请写出 char *p 与“零值”比较的 if 语句 if(NULL == p)2、写出打印结果255 #include #include int main() { char a[1000]; int i; for(i=0;i{ a[i]=-1-i; }printf(“%d”,strlen(a)); ret
2016-12-06 22:38:50 317
转载 char a[](字符串数组)和char *a(字符串指针)区别
在C语言中,对字符串的操作主要有两种方式,一是使用字符数组,char str[];二是使用字符指针。那么二者有什么区别呢?下面将分述二者的使用,最后进行比较。一、字符数组 使用char str[]定义一个字符数组str,中括号内可以写上数字表示数组大小,也可以不写。如果不写数字,则必须为字符数组提供初始值,以便编译器进行内存分配。可以使用字符串字面
2016-12-05 20:13:17 833
转载 字符串逆序(多种解法)
普通逆序基本上没有这么考的,放在这里主要是为了和后面的原地逆序做个对比。很简单,直接分配一个与原字符串等长的字符数组,然后反向拷贝一下即可。char* Reverse(char* s){ //将q指向字符串最后一个字符 char* q = s ; while( *q++ ) ; q -= 2 ; //分配空间,存储逆序后的字符串。
2016-12-04 23:58:29 1267
转载 C语言——内存分配的方式
1、全局变量和静态变量(static变量),是由编译器自动分配和释放的,初始化的全局变量和静态变量放在同一块内存区中,未初始化的全局变量和静态变量则放在相邻的另外一块内存区中。2、栈,是由编译器自动分配和释放的,主要是函数体的地址,参数和局部变量,静态变量不包含其中,操作方式类似于数据结构中的栈。3、堆,是由程序员手动完成申请和释放的,像malloc和new,程序员没有手动释放的话
2016-12-03 23:51:09 404
原创 嵌入式开发面试题
嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66.编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。典型的解决方法如下:int *ptr;ptr = (int *)0x67a9;*ptr = 0
2016-12-02 22:05:08 534
转载 C语言——使用scanf函数时需要注意的问题
转自:http://blog.csdn.NET/wayne92 scanf函数我曾经在这个函数上犯过不少错误,也看到别人犯过的错误,记下来,提醒自己不要重蹈覆辙了。如果对你有用,那就更好了:)如果你发现文章中有错误,欢迎你不吝赐 教。希望和大家一起学习!曾经错的几个地方:(xpsp2,vc6.0环境下)1.空白符问题[cpp] view p
2016-12-01 21:38:20 874
转载 如何确定CPU是大端字节序还是小端字节序?
大端字节序:高字节存放在低地址,低字节存放在高低址小端字节序:低字节存放在高低址,高字节存放在低地址大小端字节顺序它是CPU的属性,所哟不同的CPU的大小端字节顺序也不同,移植的时候需要先判断当前的CPU是大端还是小端字节序,如果不同则移植需要转移字节序int num = 0x12345678 大端
2016-11-30 22:06:56 938
转载 微机原理==汇编语言编写十进制数到二进制数的进制转换并显示
不同进制间转换一直是汇编语言必须要掌握的编程技巧,算法也比较简单: 例如:当其他进制数转为十进制时使用的除十取余法,压入栈中,弹出后实现逆序输出; 当其他进制数转为二进制时使用的除二取余法,压入栈中,弹出后实现逆序输出; 进而扩展:当其他进制数转为R进制时使用的除R取余法,压入栈中,弹出后实现逆序输出; 下面介绍一种比较简便的方法,通过移位指令实现的十进制数到二进制数形式的进制转换
2016-11-29 20:33:02 8660 2
转载 测量各种数据类型的长度(包括指针),typedf关键字对数据类型的作用!
32位处理器存储单位 bit (位) 字节 = 8 bit 半字 = 2 个字节 = 16 bit 字 = 4 个字节 = 32 bit 字节长度: 变量在内存中所占的存储空间的长度 数据类型 字节长度 char 1
2016-11-28 23:11:36 399
转载 有关函数声明的注意点
在C语言中,函数声明称为函数原型(function prototype)。使用函数原型是ANSI C的一个重要特点。它的作用主要是利用它在程序的编译阶段对调用函数的合法性进行全面检查。说明: 以前的C版本的函数声明方式不是采用函数原型,而只是声明函数名和函数类型。 如:float add(); 不包括参数类型和参数个数。系统不检查参数类型和参数个数。新版本也兼容这种用法,但不提倡
2016-11-27 22:32:56 862
原创 容易被忽略的输入和输出
在C语言里,我们经常用scanf作为输入语句,用printf输出。那么关于输入和输出,你到底了解多少呢?一、关于“&” 首先我们来看一段程序:[objc] view plain copy#include int main() { int num;
2016-11-26 22:50:21 467
转载 C中数据类型数值范围解析
类型说明符 int 字节数 4 ; 数的范围 -2^31 -- 2^31 - 1;类型说明符 unsigned int 字节数 2 ; 数的范围 0 -- 2^16 - 1; (0 - 65535)类型说明符 short int
2016-11-25 22:54:06 519
转载 C语言中,malloc和free深入理解
在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用—— 就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以 写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助
2016-11-24 21:58:10 437
转载 C和C++中struct和typedef struct的异同
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是
2016-11-23 21:59:46 265
转载 联合体的用法与特点
1.联合体union的基本特性——和struct的同与不同union,中文名“联合体、共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量。不过区别也挺明显:结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用,全分配
2016-11-22 22:25:55 609
转载 七种排序算法
一、快速排序 1. 简单介绍 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需
2016-11-21 12:04:18 324
转载 变量的存储类别详解
变量从作用域(空间)角度来分可以分为全局变量和局部变量 从变量值存在的时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。静态存储方式:程序在运行期间,由系统分配固定的存储空间的方式。动态存储方式:程序在运行期间根据需要进行动态的分配存储空间的方式内存中供用户使用的存储空间可以分为三个部分: 程序区 静态存
2016-11-20 15:58:56 820
转载 sizeof:被人们误认为函数的关键字
sizeof其实是32个关键字中的一个,为了确定它是否为关键字,下面的例子可以给出证明。[html] view plain copy pre>pre name="code" class="html">#include stdio.h> int main() { int i = 0; int a;
2016-11-18 19:08:08 288
转载 Linux C编程--sizeof面试题选
结构体和共用体的内存分配是C语言的一个难点,也是面试题中的热点。 示例1: Union data1 { double d; int i; char c1; char c2[9]; };sizeof(union data1)的值为16.在编译器默认设置的情况下,该共用体最大基本类型为double,它占8字节,所以此共用体以8来对齐。字符数组c2占9个字节,那么
2016-11-17 22:39:58 441
原创 C语言练习:字串在父串中的个数
#include#includeint main(){ int i = 0; int k = 0; int counter = 0; char a[100]; char b[100]; printf("请输入父串:\n"); scanf("%s",a); printf("请输入字串:\n");
2016-11-16 22:34:16 597
转载 C 字符数组与字符串的使用及加结束符'\0'的问题
1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定
2016-11-15 22:28:03 4854 2
原创 数据校验码
一、奇偶校验根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 校验方法 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为
2016-11-14 22:55:25 2179
原创 左右法则小练习
声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,则如何表示:解析:先看未定义的标识符p,p的左边是*,*p表示一个指针,跳出括号,由于[]的结合性大于*,所以*p指向一个大小为10的数组,即(*p)[10]。左边又有一个*号,修饰数组的元素,*(*p)[10]表示*p指向一个大小为10的数组,且每个数组的元素为一个指针。跳出括
2016-11-13 20:03:56 318
原创 详细的gcc三级优化
重新找了一下GCC 三级优化GNU编译器提供-O选项供程序优化使用: -O 提供基础级别的优化 -O2 提供更加高级的代码优化,会占用更长的编译时间 -O3 提供最高级的代码优化 -O4 不优化,这是默认值 不同的优化级别使用的优化技术也可以单独的应用于代码。 可以使用-f命令行选项引用每个 单独的优化技术。 1, 编译器优化级别1 在优化的第一个级别执行基
2016-11-12 10:52:32 1087
转载 简单的C语言小题目隐藏的知识
有时候,一些简单的选择,填空能够弥补我们对C理论知识上的空缺,使我们在实际编程时可以运用一些技巧大大提高编译以及运行的效率。希望我在做题时遇到的知识空白也能够帮到大家。1.下面哪种C/C++ 分配内存的方法会将分配的空间初始化为0: A.malloc()B.calloc()C.realloc()D.new[ ] 解析:
2016-11-11 22:12:48 337
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人