指针基础(二)_c语言学习笔记

1. c语言中的字符串
    1)c语言中的字符串,本质上是 以‘\0’(数字0) 结尾的字符型数组。
    2)字符串的指针(即字符串在内存中的起始地址 ):字符串第一个字符的地址。
	//字符串的定义和赋值
	char str[] = "I love apple!";
    3)使用字符串指针赋值:
	char *pstr;
	pstr = "I love apple!";
    4)字符指针变量与字符串常量之间的关系:
 

2. 字符串的引用
    1)逐个字符的引用:
	//定义字符指针变量pstr
	char *pstr;

	//用字符串常量"I love apple!"的地址给pstr赋初值
	pstr = "I love apple!";

	//逐个字符引用
	for ( ; *pstr != '\0'; pstr++ )
		printf( "%c", *pstr );
	//打印出“I love apple!”

	/*
	 * 注:字符指针变量pstr中,仅存储字符串常量的首地址,
	 * 而字符串常量的内容(即字符串本身),是存储在由系统
	 * 自动开辟的内存块中,并在串尾添加一个结束标志‘\0’。
	 */
    2)整体引用:
	char *pstr = "I love apple!";

	printf( "%s", pstr );  //打印出“I love apple!”
    3)整体引用原理:系统首先输出pstr指向的第一个字符,然后使pstr自动加1,使之指向下一个字符;重复上述过程,直到遇到字符串结束标志。
    4)注意,其它类型的数组,是不能用数组名来一次性输出全部元素的,只能逐个元素输出。

3. 野指针
    1)“野指针”操作,也叫空指针赋值,指一个指针没有指向一个有效内存就被引用。
    2)后果:编译时不会出错,但运行时容易出现异常,甚至系统死机。
    3)原因:指针变量被定义时,系统会分配一个随机指定的初始值。如果初始地址值是用户正常使用的内存地址,也许不会发生意外,甚至运行正常;但如果初始地址值是系统程序所占内存单元的地址,此时对该内存单元进行赋值,就会破坏系统程序内存单元,这是系统会出现难以预料的错误,甚至死机。






你可能感兴趣的:(学习笔记)