2017/02/22学习笔记

strlen()返回size_t
size_t是 unsigned int类型
很多函数,如果确认不会返回小于0的值,那么就会使用size_t类型

size_t 和int兼容

字符串比较不能使用==比较 需要使用strcmp比较 
strcmp相等返回0 否则返回非0(1,-1);
如果第一个参数的ASCII小于第二个参数,那么函数返回-1,如果相等返回0,否则返回1

#include 和 #define
#include就是简单的文件内容替换
#define 就是简单的文本替换

//头文件语法格式
//如果没有AH这个宏,那么久编译#endif之间的这些代码,如果有的话,就不编译了
#ifndef AH #define AH #endif
//防止多次include的同一个头文件的时候,重复预编译头文件内容

在#ifndef 中的宏,一定要大写和下线,必要的时候加数字避免和宏命名冲突

递归
函数自己调用自己,就叫函数的递归

递归分先序递归,和序递归
如果先序递归,那么代码是顺序执行的
如果是后序习惯,那么代码是逆序执行的

递归一定要有终止条件,不然会死循环

有时候递归可以替换循环。

指针

指针也是一个变量,指针存放的内容是一个地址,该地址指向一块内存空间
计算机的内存最小单位是Byte
每个Byte的内存都有一个唯一的编号,这个编号就是内存地址
编号在32位系统下是一个32位的整数
在64位系统下是一个64位整数
&操作符就是去变量地址的意思
int a = 0;
int *p =&a;//得到变量ad的地址,将这个地址赋值个变量p
地址虽然是一个整数,但地址是一个特殊的整数,是不能直接通过整数来操作的
int *p定义一个变量,变量名为p,他可以指向一个int的地址
指针变量的值一般不能直接赋值一个整数,而是通过取变量地址的方式赋值
*p的意思是指针变量指向内存的内容
*可以取指针存放地址所对应地址的内容
可以通过指针间接的修改指针存放地址的内容

无类型指针
定义一个指针变量,但不指定他指向具体的哪种数据类型。可以通过强制转化见void *转化为其他类型指针,也可以使用(void *)将其他类型指针强制转化为void类型指针
无类型指针,意思是这只是一个指针变量,而不指向任何具体的数据类型.

void *p = NULL //将指针赋值NULL,值为NULL的指针,我们俗称空指针
没有具体指向任何变量地址的指针叫野指针
程序中要避免也指针的存在,因为也指针是导致程序崩溃的主要原因.
//空指针是合法的,但野指针是危险的。
NULL在C语言中的定义为 (void *)0

-------------------------------------------------

An exciting trip

I have just received a letter from my brother,Tim.

He is in Australia.

He has benn there for six months.

Tim is an engineer.

He is working for a big firm and he has already visited a great number of different places in Australia.

He has just bought an Australian car and has gone to Alice Springs,a small town in the centre of Australia.

He will soon visit Darwin.From there,he will fly to Perth.

My brother has never been abroad before,so he is finding this trip very exciting.

时间: 2024-12-28 18:10:17

2017/02/22学习笔记的相关文章

2017/02/26学习笔记

堆 栈和内存映射 每个线程都有自己的专属栈,先进后出栈的最多尺寸固定,超出则引起栈溢出一个线程 一个栈,多个线程多个栈.变量离开作用域范围后,栈上的数据会自动释放堆上的内存必须手动释放,除非语言执行环境支持GC怎么选择栈还是堆? 明确知道数据占用多少内存数据很小大量内存不确定需要多少内存 int i=0; scanf("%d",&i); int array[i];//非法,定义数组的时候,必须是常量,而不能是变量 int *arr = malloc(sizeof(int)*i)

2017/04/22学习笔记

makefile中的函数 所以得makefile函数都是有返回值的 src=$(wildcard ./*.c) #从当前目录查找所有的.c文件obj=$(patsubst ./%.o, ./%.c, $(src)) #所有.c替换成点o .PHONY:clean 伪目标clean:rm $(obj) $(target) -f #删除.o和 目标 -f强制执行,不提示信息 clean:-rm $(obj) $target -f #命令前加 -,如果当前目录执行失败,忽略当前目录,继续向下执行 ma

2017.02.19学习C#的第二天,今天我学到了什么?

2017.02.19,今天是学习C#的第二天,今天学习的是: 1.数据类型:(以下是现阶段编程中最经常用到的类型) (1)整型 (2)浮点型 (3)字符型 (4)布尔型 (5)字符串型 (6)日期时间型 2.变量/常量 3.类型转换 (1)显示转换 (2)隐式转换 4.转义字符 一,基本数据类型介绍 1.整形(主要差别在取值范围) (1)byte 取值范围(0--225),超出后系统报错. (2)short 取之范围:byte < shor t< int      快捷方式为Int16 (3)

2017.2.28学习笔记------------uboot 与linux内核的打补丁,编译,烧写

三者ping通是为了可以传文件. 第0课第5节_刚接触开发板之u-boot打补丁编译使用及建sourceinsight工程: Uboot打补丁:uboot源码是不能在2440用的,打了补丁后可以在2440中使用(在虚拟机里面配置,具体用到ls,cd,tar xjf u-boot-1.1.6等指令),解压出来等等,忘了可以看视频. Source insight工程:操作软件,方便看uboot源码等等,没什么可说的. 编译:cd u-boot-1.1.6 make 100ask_24x0.confi

2017/05/05学习笔记

系统中所以的信息包括磁盘文件.内存中的程序.内存中存放的用户数据及网络上传送的数据都是由一串bit表示的.区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文.为了在C程序中做出好的编码选择,我们确实需要了解一些机器代码以及编译器将不同的C语句转化为机器代码的方式.比如一个switch是否总是比一个if-else语句高效的多?一个函数调用的开销有多大?while循环比for循环更有效么?指针引用比数组索引更有效么为什么将循环求和的结果放到一个本地变量中,会比其放到一个通过引用传递过来的参数

Other - 02 - Servlet学习笔记 - 异步Servlet

异步Servlet Servlet默认情况下都是同步的,但是Servlet可以进行异步的调用. /** * Servlet implementation class MainServlet */ @WebServlet(value = "/MainServlet", asyncSupported = true) public class AsynServlet extends HttpServlet { private static final long serialVersionUI

Python学习笔记-2017.5.4thon学习笔记-2017.5.14

Python学习过程中的笔记,只做自己参考使用: lambda函数,匿名函数,当我们使用一个函数并且使用完成就删除时,可以使用匿名函数,比如f等于xyz三个之和: f = lambda x,y,z:x+y+z 生成器和迭代器: 生成器,我们常用的列表一般有两种方式生成,例如: 1.直接写出列表 a = [1,2,3,4,5,6,7,8,9] 2.通过列表生成式生成列表 a = [i*i for i in range(10)] 上述两种列表是我们常用的列表方式,调取方便,随便增删改查取值,但是有可

2017/03/31学习笔记

双向链表 单向链表的节点都只有一个指向下一个节点的指针单向链表的数据元素无法直接访问其前驱元素逆序访问单向链表中的元素时极其耗时的操作双向链表在单向链表的基础上增加了指向前驱的指针功能上双向链表可以完全取代单向链表的使用 栈是一种特殊的线性表 栈仅能在线性表的一端进行操作栈顶:允许操作的一端栈底:不允许操作的一端首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系.只不过它是一种特殊的线性表.定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底.他的特殊之处就在于

2017/03/27学习笔记

程序的输入是指从输入文件讲数据传送给程序,程序的输出是指从程序将数据传送输出文件.C++输入输出包含以下三方面内容:对系统指定标准设备的输入和输出.即从键盘输入数据,输出到显示器.这种输入输出称为标准输入输出,简称标准IO.以外出磁盘文件为对象进行输入输出,即从磁盘文件输入数据,将数据输出到文件.以外存为对象的输入输出称为文件的输入输出,简称文件IO.度内存中指定的空间进行输入输出,通常指定一个字符串数组作为储存空间(实际上可以利用该空间储存任何信息).这种输入输出称为字符串输入输出,简称串IO