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
& ......
一、一个经过编译的C/C++的程序占用的内存分成以下几个部分:
1、栈区(stack):由编译器自动分配和释放 ,存放函数的参数值、局部变量的值等,甚至函数的调用过程都是用栈来完成。其操作方式类似于数据结构中的栈。
2、堆区(heap) :一般由程序员手动申请以及释放, 若程序员不释放,程序结束时可能由OS回收 ......
方式 符号常量 显示列×行数和颜色
0 BW40 40×25 黑白显示
1 C40 40×25 彩色显示
2 BW80 80×25 黑白显示
3 C80 80×25 彩色显示
7 MONO 80×25 单色显示
-1 LASTMODE 上一次的显示方式
Turbo C 也可以让用户根据自己的需要重新设定显示窗口,也就是说,通过使用窗口设
置函数wi ......
#include <iostream>
using namespace std;
class Base {
public:
virtual void fn(int x) {
cout << "In Base class, int x = " << x << endl;
}
};
class SubClass : public Base {
public:
// 函数的重载,这样的重载方式,在Java中能行,在C/C++中却不行
virt ......