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
& ......
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.为什 ......
1 编译器 有谁真正的理解过一个编译器呢?许多人认为TC很简单很落后,但是即便是这样简单的工具,到底有几个人真正的深入理解了呢?一个简单的编译器都不能理解,如何能成为高手,如何能深入的使用更加高级的工具呢?不要以为自己使用的是VC就很了不起,因为使用这样傻瓜化的工具只能让你看不到事物的本质。接下来我们就来 ......
题目:在屏幕上画一个矩形
要求:每按一次键盘,该矩形转动45度。矩形的大小和转动的方向有键盘输入,并将输入的数据送文件保存,按回车键程序结束。(功能延伸:改变数据文件的内容后,再根据数据文件里的数据绘制矩形)
......