
c语言
文章平均质量分 77
晴天里的风
这个作者很懒,什么都没留下…
展开
-
C_C++指针指针总结
C_C++指针指针总结一、简单类型分析:int p; //这是一个普通的整型变量 int *p; //首先从P 处开始,先与*结合,所以说明P 是一个指针,然后再与int 结合,说明指针所指向的内容的类型为int 型.所以P 是一个返回整型数据的指针 int p[3]; //首先从P 处开始,先与[]结合,说明P 是一个数组,然后与int 结合,说明数组里的元素是整型的,所以P 是原创 2012-03-30 08:53:31 · 677 阅读 · 0 评论 -
一步一步写算法(之开篇)
算法是计算机的生命。没有算法,就没有软件,计算机也就成了一个冰冷的机器,没有什么实用价值。很多人认为,算法是数学的内容,学起来特别麻烦。我们不能认为这种观点是错误的。但是我们也知道,软件是一种复合的技术,如果一个人只知道算法,但是不能用编程语言很好地实现,那么再优秀的算法也不能发挥作用。一个人只有有了很好的计算机知识和数学知识,才能在算法的学习上不断进步。不管算法都么简单,都要自己亲手实践,只有不转载 2012-07-24 14:22:11 · 842 阅读 · 1 评论 -
一步一步写算法(之循环和递归)
其实编程的朋友知道,不管学什么语言,循环和递归是两个必须学习的内容。当然,如果循环还好理解一点,那么递归却没有那么简单。我们曾经对递归讳莫如深,但是我想告诉大家的是,递归其实没有那么可怕。所谓的递归就是函数自己调用自己而已,循环本质上也是一种递归。 1)求和递归函数 我们可以举一个循环的例子,前面我们说过,如果编写一个1到n的求和函数怎么写呢,你可能会这么写:转载 2012-07-24 14:24:52 · 463 阅读 · 0 评论 -
一步一步写算法(之递归和堆栈)
看过我前面博客的朋友都清楚,函数调用主要依靠ebp和esp的堆栈互动来实现的。那么递归呢,最主要的特色就是函数自己调用自己。如果一个函数调用的是自己本身,那么这个函数就是递归函数。 我们可以看一下普通函数的调用怎么样的。试想如果函数A调用了函数B,函数B又调用了函数C,那么在堆栈中的数据是怎么保存的呢?函数A ^函数B | (地址递减)函数C |转载 2012-07-24 14:26:08 · 486 阅读 · 0 评论 -
一步一步写算法(之内存)
内存是程序运行的基础。所有正在运行的代码都保存在内存里面。内存需要处理各种各样的数据,包括键盘的数据、鼠标的数据、usb的数据、串口的数据、摄像头的数据,那么这些数据经过程序的处理之后,就要进行输出到串口、屏幕、usb等。 内存只有一个,但是程序里面的空间有很多种。但是内存中的数据类型只有几种,比如说全局中的数据、堆中的数据、临时堆栈中的数据。那么他们有什么区别呢?我们可以通过代码转载 2012-07-24 14:27:10 · 804 阅读 · 1 评论 -
strtok()—字符串分割函数
头文件:#include 定义函数:char * strtok(char *s, const char *delim); 函数说明:strtok()用来将字符串分割成一个个片段. 参数s 指向欲分割的字符串, 参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符. 在第一次调用时,strtok()必需给原创 2012-07-27 10:20:48 · 472 阅读 · 0 评论 -
C语言文件操作函数大全
C语言文件操作函数大全clearerr(清除文件流的错误旗标)相关函数 feof表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf转载 2012-07-27 16:24:22 · 541 阅读 · 0 评论 -
小议大小端模式对C语言的共用体结构的影响
小议大小端模式对C语言的共用体结构的影响1、一些问题问题1[plain] view plaincopyprint?#include "stdio.h" union { int i; char ch[2]; }key; main() { key.i=65*256+66; printf("%c\t%c\n",k转载 2012-07-31 22:16:25 · 1413 阅读 · 0 评论 -
详解大端模式和小端模式
详解大端模式和小端模式一、大端模式和小端模式的起源关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令所有的子民吃鸡蛋转载 2012-07-31 22:14:40 · 1691 阅读 · 0 评论 -
嵌入式C经典面试题(一)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 考点:1) #define 语法的基本知识(不能以分号结束,括号的使用,等等);2) 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒,而不是计算出实际的值,是更清晰而原创 2012-08-23 01:25:31 · 2487 阅读 · 0 评论 -
经典C面试题
12个有趣的C语言面试题面试题C摘要:12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); pri转载 2012-09-08 09:59:33 · 13958 阅读 · 0 评论 -
linux内核list.h 想熟练运用链表的必须课
#ifndef __LIST_H#define __LIST_H#if defined(WIN32)#define INLINE __inline#else#define INLINE inline#endif/* This file is from Linux Kernel (include/linux/list.h) * and modified by simp原创 2012-07-17 13:18:57 · 683 阅读 · 0 评论 -
list.h使用实例
#include #include "list.h"struct person{ int age; int weight; struct list_head list;};int main(int argc, char* argv[]){ struct person *tmp; struct list_head *pos, *n; int age_i原创 2012-07-17 13:32:52 · 1002 阅读 · 0 评论 -
数组结构体总结(C语言)
数组定义:数组是有序的并且具有相同类型的数据的集合。一维数组1、一般形式:类型说明符 数组名[常量表达式];例如: int a[10]; 元素为a[0]----a[9].2、常量表达式中不允许包含变量,可以包含常量或符号常量。3、数组元素下标可以是任何整型常量、整型变量或任何整型表达式。4、可以对数组元素赋值,数组元素也可以参与运算,与简单变量一样使用。原创 2012-03-30 08:55:21 · 18780 阅读 · 0 评论 -
变量和值在内存中的存储位置
变量和值在内存中的存储位置一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分 配方式倒是类似于链表,原创 2012-03-30 08:56:49 · 1019 阅读 · 0 评论 -
车辆信息管理系统(部分模块待改进),直接运行即可,绝对原创
#include #include #include #include #include #include "list.h"#define N 20#define M 5struct car_parameter{ char car_length[N]; char car_wideth[N]; char car_high[N]; char ca原创 2012-03-30 08:59:22 · 2388 阅读 · 0 评论 -
fscanf函数
下面介绍一个例子, 运行后产后一个test.dat的文件。 例11: #include main() { char *s="That's good news"); /*定义字符串指针并初始化*/ int i=617; /*定义整型变量并初始化*/原创 2012-03-31 13:03:49 · 2361 阅读 · 0 评论 -
Linux下编译时出现的错误及解决方法
Linux下编译时出现的错误及解决方法 (1)由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误: undefined reference to 'pthread_create' undefined reference to 'pthread_join' 问题原因: pt原创 2012-04-24 19:40:38 · 1038 阅读 · 0 评论 -
# include <errno.h >查看错误代码errno是调试程序的一个重要方法。当Linux C API函数发生异常时,一般会将errno变量赋值一个整数,不同的值表示不同的含义,可以通过查看
查看错误代码errno是调试程序的一个重要方法。当Linux C API函数发生异常时,一般会将errno变量赋值一个整数,不同的值表示不同的含义,可以通过查看该值推测出错的原因。以下来自linux 2.4.20-18的内核代码中的/usr/include/asm/errno.h。#ifndef _I386_ERRNO_H#define _I386_ERRNO_H#define E转载 2012-04-26 21:34:36 · 1152 阅读 · 0 评论 -
c语言嵌入式系统修炼之道——内存操作篇
C语言嵌入式系统编程修炼之道——内存操作篇1.数据指针在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力。在嵌入式系统的实际调试中,多借助C语言指针所具有的对绝对地址单元内容的读写能力。以指针直接操作内存多发生在如下几种情况:(1) 某I/O芯片被定位在CPU的存储空间而非I/O空间,而且寄转载 2012-04-18 10:56:48 · 1567 阅读 · 0 评论 -
万年历(C语言)---绝对原创
#include int year;int leap(int year); //判断闰年int newday(); //判断改年的元旦是星期几char *month_name(int n); //月份转换函数int print_head(void)原创 2012-05-07 08:13:57 · 687 阅读 · 0 评论 -
几种常见的排序汇总
#include #define N 5int bubble_sort(){ int grade[N],temp; int i,j; i=j=temp=0; printf("Please input %d numbers:\n", N); for(i=0;i { scanf("%d", &grade[i]); } printf("T原创 2012-05-07 08:17:31 · 417 阅读 · 0 评论 -
/*汉诺塔问题*/
#include void move(int n, char x, char y, char z){ if(1 == n) { printf("%c--->%c\n",x,z); } else { move(n-1,x,z,y); printf("%c--->%c\n",x,z); move(n-1,y,x,z); }}int mai原创 2012-05-07 08:18:30 · 2373 阅读 · 0 评论 -
C语言的 debug,log,try的区别和用法
哈。好久没有水技术贴了。这里讨论一下C语言的 debug,log,try的区别和用法。log大家都知道,我先简单重复一下作用,log的目的是对程序运行态下,运行状态的一个记录。debug是什么?debug就是debug哈。我仍然坚持一个原则,其他C 程序员是否坚持和我没关系。即,不使用IDE。不使用DBG。不使用IDE的主要原因是没有好的IDE,同时很多debug的策略技巧,IDE也没原创 2012-09-16 20:30:12 · 3028 阅读 · 1 评论