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()
相关文档:
ARM C嵌入式编程中的几个关键字
1、访问绝对地址的内存位置:
#define pISR_EINT0 (*(unsigned *) (_ISR_STRATADDRESS+0x74))
上述语句把无符号整数_ISR_STRATADDRESS+0x74强制转换为指针,指向RAM,用下面的语句可以访问它:
pISR_EINT0 = (int)Eint0_ISR
& ......
alloc.h
brk
【功能】更改数据段空间的分配
【原型】int brk(void *endds)
【位置】alloc.h
【说明】将程序数据段的顶部设置为endds所指向的内存位置。调用成功之后,返回0。如果调用失败则返回-1,同时设置errno。
【参见】coreleft
calloc
【功能】分配内存。
【原型】void *calloc(size_t nelem,size_t elsize) ......
---------------------------------------------------
名 等价值 含 义
BLACK 0 黑
BLUE 1 ......