您的位置:首页 > 编程语言 > C语言/C++

黑马程序员-IOS笔记-C语言中的字符串数组 指针

2015-05-13 11:01 330 查看
1、字符串

用“”引起来的内容,就是字符串。

在C语言中有没有专门的字符串的变量? 没有

所以我们使用字符数组来存储字符串。(把字符串的每一个字符存储到字符数组的每一个元素中,并且会多存放一个‘\0’)

'\0' 字符串的结束标记,ascII码表中值是 0 对应的字符。NUT,NULL

2、字符数组

1)定义

char 数祖名[长度];

char str[200]; 表示定义一个长度为200的字符数组,如果用来存储字符串,则字符串的最大长度是199,留出一个给'\0'

char str[3]={'a','b','c'}; //不能以%s进行输出

2)初始化

(1)完全初始化

char str[3]={'a','b','c'};

(2)部分初始化

char str[3]={'a','b'};

(3)用字符串进行初始化

char str[10]="itcast"; //占用了7个字节因为'\0'占用了一个

char str[10]={"itcast"};

3)字符数组的引用

如果把字符数组的内容逐个取出,str[0]、str[1]....str[n-1];

%s 字符串的格式控制符把字符数组整体进行输出

%s 给一个字符数组的首地址,系统会自动从首地址开始连续读取直到遇到'\0'结束

4)存储细节

字符数组存储的细节:

连续的一片存储区域(地址是连续的),每个字符占用1个字节

计算字符数组(字符串)的长度

针对这种定义方法,求长度(会包含'\0'):char str[]="abc"; //4

sizeof(str)/sizeof(char) = sizeof(str);

strlen也可以计算字符串的长度(不包含'\0'):

strlen(str); //3

3、字符数字和普通数组的区别

char str[]; //只能存字符型数据

int arr[]; //只能存整型 数据

4、常见的字符串函数6个

gets(数组名) 表示获取从键盘数输入的字符串(可以接收空格)

puts(数组名) 表示讲数组的内容输出到控制台(可以自动换行)

strcat(数组名1,字符串) 表示把字符串链接到数组1中(回覆盖数组1的\0)

strcpy(数组名1,字符串) 表示把字符串拷贝到数组1中,会覆盖数组1中原有的内容

strcmp(字符串1,字符串2) 比较两个字符串的大小

字符串1>字符串2 >0

字符串1<字符串2 <0

字符串1==字符串2 ==0

strlen(数组名) 计算字符串的长度(不包括\0)

5、什么是地址?什么是指针?

内存被操作系统划分了若干个存储单元,每个单元是1个字节(8位)

每个字节都有字节的地址,这个地址就叫指针。

地址和内存单元是两个不同的概念

地址是内存单元的编号

内存单元是地址对应的实际存储内容。

6、指针变量

用来存放地址的变量,就称为指针变量

1)定义

数据类型 *指针变量名 ; //指针变量是个变量,指针是常量

"*" 在两个场合起作用:

定义指针的时候使用 int *a; // *表示定义一个指针变量

在指针对应的存储单元内容的时候用 *a //表示获取指针变量中存放的地址所对应的存储内容

2)初始化

指针定义完成以后,要初始化,如果不初始化,则这个指针成为野指针

可以用NULL 也可以用 0 进行初始化,表示这是一个空指针,什么也不指。

正常情况下的初始化

int a;

int *p1 = &a;

3)访问方法

*指针变量 //表示获取指针变量中存放的地址所对应的存储单元的内容

7、指针的使用场景

1)间接修改变量的值

8、多级指针

指针的指针

9、指针为什么要区分类型

1)数据有不同类型,要指向不类型的数据也需要不同的指针

2)指针是一个地址,*指针变量 不知道取多少个字节的内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: