栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言指针 与字符串的学习

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言指针  与字符串的学习

字符数组   元素是单个单个的字符                         char cdata[  ] ={ ' a ',   'b'  , 'c'  ,'d'  , 'e'     };           字符串      末尾隐藏     '   '                                     char cada[ 100  ]   ={   ' 0  '   };      置0             表达式1    char cdata [ 12 ] ="mydm sz  ";           表达式2    char *pchar ="mydm sz";                     表达式1与2的区别在于 :                                     1中cdata是地址变量,可以修改对应的字符串里的单个字符内容                                                2中 pchar是地址常量,字符串是个整体,无法被修改,只有整体概念,无单个字符概念       表达式1与2的区别在于:                                     sizeof( p  )  在os中一个地址8位/4位                   sizeof(cdata) 数组的所有空间                             strlen(cdata)有效数据的空间

 

      字符串相关操作:                                                char cdata [ 128  ]     ={  '      '   };                     scanf( " %s "  ,  cdata );                                     char *pchar =  "mydm sz" ;                                   puts(pchar)  ;                                                           putchar( '  A ' );                                                        puts(" Done!  "  ) ;

       

表达式1下的sizeof和strlen                                   char cdata[ 121  ]   ="mydmsz";                            sizeof 标识符                                                                      数组开辟的总空间大小                               strlen函数                                                                            数组开辟的有效数据的空间大小             常见的API函数                                                      <   stdblib.h      >         

1.malloc函数

  p  =(  void *)malloc(12)    在堆上开辟空间,使指针不野。 

  2.realloc在原本p的内存上开辟newlwn空间         char *p=(   char *) malloc(  num)  ;                        int len= strlen("yyyyyyyyyyy     ");                         int newlwn =len-num+1;                                        realloc  (p,   newlen  )                                            换成情形1可以实现用户根据自己的输入开辟对应的空间,扩容对应的空间。               

 

                                                                         3.free函数

free (   p )     清除malloc开辟空间,特别是已经成了悬空的内存空间                                         

 

 

 

   1.memset                                                               字符串在情景1下才能这样用(用sizeof)                      char str[10];                                                               memset(str, '', sizeof(str));                   在情景2下只能用单独的数字                              p  =(  void *)malloc(12)                                 memset( p,  '' ,12或者num  )  ;                        2.strcopy ( strncopy ) 用后面的(其中几个字节)把前面覆盖  函数。指针1和指针2齐头并进。       

   strncmp                                                                    while(*des   &&  *src  &&  (    *des=*src  )&&count  )                                            进入if条件同理

若count大于元函数的大小 用count--耗尽,下面*des被赋结束标志后立即返回函数值bak,防止最下面*des被再次赋结束标志。           

 

 

 

 

3.strcat       指针1先走,找到自己的之后,指针二的内容覆盖到上  ,两指针各自前行    最终出现两个结束标志,实际上上是一个,赋值后与while里的0比较不满足条件,指针不自增,即跳出条件的把原本被赋值的给覆盖了(用的是     (*a++=*b++)!=''  )       

另一种方式   借助strcopy(cdata+strlen(cdata) ,  p );

 

 

 


4.strcmp  比较函数                                              对应长度对应字符不相等时跳出                              while(*des   &&  *src  &&  ( *des=*src  )  )        while里有指针时,条件侧重'    '  不满足条件                                                                               if(*des  ||  *src  ) 进入条件进行各自对应的相加,注意这之前需将指针归位                                                           

 

断言函数                                                assert(des!=  NULL  &&  src!=NULL   )                 当条件不满足时,打印提示信息并将中指程序向下的运行

 

 

 

本章结的总要思想

1.(*a++=*b++ )  !='  '   ;                                          自增运算第一位,但指针++放在所有操作进行完之后,即先两个解引用完,在进行赋值,在进行条件的判断,只有当前面的操作进行完之后,指针才会++

2.while中有指针时                                                   '' 就是0,即不满足条件                                     while(*des);                                                      

3.while(*src)

{   *des =*src;             情况A                                                 des++;                                                                     src++;

}                                                                                   *des ='';                                                                 

情况B                                                                         while(  (*des++ =*src++)     !='/0'     );             *des='/0';                                                                  看似两个结束标志,实则指针未移动,条件的结束标志把 *src赋给*des的结束标志 覆盖            

if(des==NULL|| src==NULL){

return 0;                                                                    }

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号