一、字符数组?
1、什么是字符数组?
一个数组中全部成员都是字符来的。
例子: char A[5];
2、字符数组赋值?
1)定义同时初始化?
char A[10] = {'h','e','l','l','o'}; -> 剩余没有赋值的5个元素都为0
char A[10] = {"hello"}; -> 将字符串hello赋值给数组
char A[10] = {"10086"}; -> char A[10]已经决定每一个成员都是字符类型,所以 '1','0','0','8','6'
int A[10] = {1,0,0,8,6}; -> int A[10]已经决定每一个成员都是整型类型,所以 1,0,0,8,6
char A[10] = "hello"; -> {}可以省略!
3、将字符串常量赋值给数组在内存中是如何变化?
int a = 10;
char A[10] = "hello";
其实将常量区中的值赋值给栈区空间。
1)注意:
所有字符串常量在常量区存在都会以' '作为结束的标志。
Oct Dec Hex Char
000 0 00 NUL ' '
2)例如:
hello world apple tree
二、字符指针?
整型指针 -> int类型
字符指针 -> char类型
例子1:
char a = 'h';
char *p = &a; -> p就是字符指针 -> 指向一个字符类型的数据a
例子2:
char *p = "hello"; -> 正确!
究竟p指向字符?还是指向一个字符串?
字符指针p永远只能指向字符,不可能指向整个字符串,在这个例子,p指向"hello"这个字符串的首元素'h'的地址
注意:
1)p是一个指针变量,所以只能存放地址,存放着是hello中'h'的地址。
2)p是一个指针变量,不能存放字符串,不是将常量区的hello拷贝过来。
3)字符指针只能指向字符,不能指向字符串。
4)%s 输出字符串
输出原则:给定一个地址,判断地址上值是不是' '。
如果不是