C语言中的字符串数组 指针

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)指针是一个地址,*指针变量  不知道取多少个字节的内容

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。