狐狸梦见乌鸦

当坚持成为一种习惯,目标将不在遥远```
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  C语言

摘要:1、关键字c语言关键字有32个。sizeof是关键字不是函数。define不是关键字。auto.int.short.double.float.char.if.else.switch.case.default.break.register.const.extern.sizeof.while.for.goto.do.continue.return.void.enum.typedef.union.volatile.unsigned.struct.signed.long.static.2、定义和声明 区别定义:编译器创建一个对象,为这个对象分配一块内存并给它取个名字,该名字就是变量名或对象名。(一个变 阅读全文

posted @ 2013-02-20 17:51 灬啊U 阅读(200) 评论(0) 推荐(0)

摘要:float(**def)[10]; def为二维指针,这个二维指针指向一个一维指针,这个一维指针指向一个数组,数组类型为float[10]解析:从标示符开始(**def),def的右边无类型,左边是一个*,所以p是一个指针,然后*p的左边是*,说明p是一个指向指针的指针,接着(**def)的右边是[10],说明p指向的指针指向一个含10个元素的数组,(**def)的左边是float,说明该数组的元素都是float类型的。double*(*gh)[10]; gh是一个指针,这个指针指向一个数组,数组的类型为double*[10],即数组大小为10,元素类型为double*解析:先从标示符开始(* 阅读全文

posted @ 2013-02-20 17:49 灬啊U 阅读(204) 评论(0) 推荐(0)

摘要:1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 5 char checkFirstChar(char *stringSrc) 6 { 7 char *ptr = stringSrc; 8 int arraryHash[255]; 9 memset(arraryHash,0,sizeof(int)*255);10 while (*ptr != '\0')11 {12 arraryHash[*ptr]++;13 ptr++;14 ... 阅读全文

posted @ 2012-08-29 22:23 灬啊U 阅读(498) 评论(0) 推荐(0)

摘要:内存对齐:1.内存为了提高访问效率,规定以结构体中最大的基本单位长度为对齐标准。即实际分配的内存大小是对齐标准的整数倍。例一、1 struct student2 {3 char name[20];4 int age;5 char sex;6 char phone[15];7 };8 struct student stu;那么:sizeof(stu)的大小为20+4+1+15=40byte。如果phone[16]/[17]/[18], 结果则是44byte。因为上面的结构体中,最大的基本类型是int,所以实际大小为4的整数倍。但是为什么不以... 阅读全文

posted @ 2012-03-08 09:05 灬啊U 阅读(1274) 评论(0) 推荐(0)

摘要:数据结构组成: 顺序表\链表 顺序栈\链栈 邻接矩阵\邻接表1 逻辑结构(前驱和后继来判断)线性结构:线性表 栈 队列非线性结构:树(节点), 图(顶点)2 存储结构① 顺序存储:将数据结构中的各个元素按照其逻辑的顺序存放于一片连续的存储空间中。。。。。如:数组② 链式存储:将数据结构中的各元素分布到储存器的不同点,用地址或者链指针方式建立他们的联系。(链式存储结构是重点,因为数据结构中的元素的关系在计算机内部很大程度上是通过地址或者指针来建立的)③ 索引存储:数据文件 + 索引表。。。。例如:判断2个字符串中相同元素的个数,利用了ASCII表。④ 散列(Hash) :根据数据元素的字符特殊字 阅读全文

posted @ 2012-02-08 15:35 灬啊U 阅读(280) 评论(0) 推荐(0)

摘要:c语言中需要内存来存放数据。而内存主要分为两类:静态存储区和动态存储区;1.静态存储区分为:只读数据(READONLY DATA)区、以读写数据(RW DATA)区、未初始化区(BSS)。它们都是在程序编译连接阶段确定的,在程序执行的阶段不会改变。2.动态存储区分为堆和栈。都是程序执行的过程中动态分配的,大小也随之动态变化。从内存管理的实现的角度看来,堆使用的链表实现的,而栈使用的是线性存储的方法。栈:栈是先进后出,实际的操作中,栈内存可以有满栈和空栈的情况,满栈的情况下,栈指针当前的位子是已经使用的的栈区域;空栈的情况是,栈指针当前的位子是没有使用的栈区域,所以两种情况的出入栈,指针和数据的 阅读全文

posted @ 2012-01-19 00:03 灬啊U 阅读(1832) 评论(0) 推荐(1)

摘要:1.#include<stdio.h>#include<stdlib.h>char *reverse(const char *p);int main(){ char *test="anihC evoL I"; char *p=reverse(test); printf("%s",p); free(p); return 0;}char *reverse(const char *p){ char *dest=NULL; //空指针 int len=0,i; char *d=""; //d 指向一块合法的地址 whi 阅读全文

posted @ 2011-10-27 21:45 灬啊U 阅读(157) 评论(0) 推荐(0)

摘要:1.地址访问方法:#include<stdio.h>int main(){ char str1[] = "I love china",str2[20]; int i; for (i = 0;*(a+i) != '\0';i++) { *(b+i) = *(a+i); } *(b+i) = '\0'; printf("The string str1 are :\n",a); printf("The string str2 are:"); for (i = 0;*(b+i) != '\0 阅读全文

posted @ 2011-10-27 19:30 灬啊U 阅读(283) 评论(0) 推荐(0)

摘要:这两天在练习C语言基础编程的时候遇到了一道关于编写函数比较两个整数的大小的问题,看似挺简单的,后来查了不少资料发现,还是有些细节问题需要研究的。总结:1,因为异号相减容易溢出,确保两数是同号后可以用减法。2,负整数右移(sizeof(int)*8 -1 )后,得到的是-1而不是1,因为负整数右移是算数右移SAR;3,注意移位运算的优先级要比加减法低。4,不要直接使用31,因为有些系统的int不是32位的。5,在计算机中,由于机器码的位数通常是给定的,因此计算机中数的表示范围(允许取值范围)是有限的。若两数进行加减运算的结果超出给定的取值范围就称为溢出。当计算过程中出现溢出时,必须及时处理。定点 阅读全文

posted @ 2011-10-24 10:16 灬啊U 阅读(1168) 评论(0) 推荐(0)