[size=medium]1. c语言中的字符串
1)c语言中的字符串,本质上是 以‘\0’(数字0) 结尾的字符型数组。
2)字符串的指针(即字符串在内存中的起始地址 ):字符串第一个字符的地址。[/size]
[img]http://images.cnblogs.com/cnblogs_com/elingwange/389869/r_%e5%ad%97%e7%ac%a6%e4%b8%b2%e6%9c%ac%e8%b4%a8.jpg[/img]
2. 字符串的引用
1)逐个字符的引用:[/size]
4)注意,其它类型的数组,是不能用数组名来一次性输出全部元素的,只能逐个元素输出。
3. 野指针
1)“野指针”操作,也叫空指针赋值,指一个指针没有指向一个有效内存就被引用。
2)后果:编译时不会出错,但运行时容易出现异常,甚至系统死机。
3)原因:指针变量被定义时,系统会分配一个随机指定的初始值。如果初始地址值是用户正常使用的内存地址,也许不会发生意外,甚至运行正常;但如果初始地址值是系统程序所占内存单元的地址,此时对该内存单元进行赋值,就会破坏系统程序内存单元,这是系统会出现难以预料的错误,甚至死机。
[/size]
1)c语言中的字符串,本质上是 以‘\0’(数字0) 结尾的字符型数组。
2)字符串的指针(即字符串在内存中的起始地址 ):字符串第一个字符的地址。[/size]
//字符串的定义和赋值
char str[] = "I love apple!";
[size=medium] 3)使用字符串指针赋值:[/size]
char *pstr;
pstr = "I love apple!";
[size=medium] 4)字符指针变量与字符串常量之间的关系:
[img]http://images.cnblogs.com/cnblogs_com/elingwange/389869/r_%e5%ad%97%e7%ac%a6%e4%b8%b2%e6%9c%ac%e8%b4%a8.jpg[/img]
2. 字符串的引用
1)逐个字符的引用:[/size]
//定义字符指针变量pstr
char *pstr;
//用字符串常量"I love apple!"的地址给pstr赋初值
pstr = "I love apple!";
//逐个字符引用
for ( ; *pstr != '\0'; pstr++ )
printf( "%c", *pstr );
//打印出“I love apple!”
/*
* 注:字符指针变量pstr中,仅存储字符串常量的首地址,
* 而字符串常量的内容(即字符串本身),是存储在由系统
* 自动开辟的内存块中,并在串尾添加一个结束标志‘\0’。
*/
[size=medium] 2)整体引用:[/size]
char *pstr = "I love apple!";
printf( "%s", pstr ); //打印出“I love apple!”
[size=medium] 3)整体引用原理:系统首先输出pstr指向的第一个字符,然后使pstr自动加1,使之指向下一个字符;重复上述过程,直到遇到字符串结束标志。
4)注意,其它类型的数组,是不能用数组名来一次性输出全部元素的,只能逐个元素输出。
3. 野指针
1)“野指针”操作,也叫空指针赋值,指一个指针没有指向一个有效内存就被引用。
2)后果:编译时不会出错,但运行时容易出现异常,甚至系统死机。
3)原因:指针变量被定义时,系统会分配一个随机指定的初始值。如果初始地址值是用户正常使用的内存地址,也许不会发生意外,甚至运行正常;但如果初始地址值是系统程序所占内存单元的地址,此时对该内存单元进行赋值,就会破坏系统程序内存单元,这是系统会出现难以预料的错误,甚至死机。
[/size]