C Primer Plus 第11章 字符串和字符串函数 小结
一、字符串初始化方式
//第一种:大小确定的情况
char string1[10] = "I am a boy";
//第二种:自动计算大小
char string2[] = "I am a boy";
//第三种:初始化一个指针
char *string3 = "I am a boy";
//第四种:初始化一个指针数组
char *string4[10] = "I am a boy";
二、字符串中数组和指针的区别
数组名就是一个指针,指向首元素。
数组名是个地址常量,就是说不可以更改,比如进行自增运算,但可以进行string+1来指明下一个元素
指针是变量,就是说可以改变值,可以进行自增运算
三、字符串的输入
gets()函数:读取除了换行符'\n'以外的所有字符,返回值是读取的字符串的首地址。如果出错则返回空地址NULL
fgets()函数:为读取文件而设计,但也可以从键盘读数据,只要第三个参数为stdin即可。与gets()不同的是它会读取换行符,并存到字符串当中
scanf()函数:比较适合于读取单词,而不是字符串
四、字符串的输出
puts():参数为字符串首地址,显示完字符串后会添加一个换行符,就是会自动换行
fputs():类似fgets(),为了输出到屏幕,后一个参数需要写成stdout。它不会输出换行符
五、main函数的标准形式
int main (int argc, char *argv[])
argc是参数数量,argv是一个指针数组,存放输入命令行参数里面字符串的地址
六、字符串转换成数字
C规定外部的输入输出必须都是以字符或字符串的形式进行,但内部运算要求数字形式,所以当main函数需要数字命令行参数的时候就需要转换。
stdlib.h里面有提供atoi(),atof(),atol(),strtol(),strtoul(),strtod()
相关文档:
http://www.gamedev.net/reference/programming/features/orgfiles/page2.asp
通过四个pitfall讲解头文件的由来和好处,以及使用头文件定义inline func and template.
Remember that, as far as the compiler is concerned, there is absolutely no difference between a header file and a source file.
The key idea ......
1.gcc包含的c/c++编译器
gcc,cc与c++,g++
gcc和cc是一样的,c++和g++是一样的。一般c程序就用gcc编译,c++程序就用g++编译。
2.gcc的基本用法
gcc test.c:如果没有指定输出的文件,默认将编译出一个名为a.out的程序
gcc test.c -o test:-o参数用来指定生成目标程序的名字,这样将编译出一个名为test的程序。
3.为什 ......
什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。下面是Linux系统下用C语言创建的一个线程池。线程池 ......
一、一个经过编译的C/C++的程序占用的内存分成以下几个部分:
1、栈区(stack):由编译器自动分配和释放 ,存放函数的参数值、局部变量的值等,甚至函数的调用过程都是用栈来完成。其操作方式类似于数据结构中的栈。
2、堆区(heap) :一般由程序员手动申请以及释放, 若程序员不释放,程序结束时可能由OS回收 ......
线型
-----------------------------------------------------
名 称 取 值 含 义
-----------------------------------------------------
SOLID_LINE 0 & ......