C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(1)

本文主要探讨C/C++中字符串、字符数组和字符指针的静态拷贝安全问题,通过实例代码和详细注释进行讲解,旨在帮助读者理解和避免相关问题。文章在VS2013环境下测试通过,强调理解代码的重要性,下篇将讨论安全追加问题。
摘要由CSDN通过智能技术生成

前言

这是第一篇,将把一些基本概念注意点列明,代码都在vs2013测试过,读者如果想用,应该花点时间理解,而不是把注释全部去掉来运行。本篇知识讲解一下安全拷贝的问题及其解决方案,下一篇将介绍安全追加问题

代码及其注释讲解

/* c中由于要追求效率,所以字符串字符数组这类都是先划分好存储区域的 */
/* 注意以下写法 */
/*
    char *str1; //字符指针,指向可变,指向内容不知道是常量还是变量(指向内容不知可不可改)
    char *str2="abc";  //字符指针,指向字符串常量,指向内容不可改,指向可变
    char str3[]="abc";  //字符数组,和str3[3]="abc"效果相同,str3指向内容可改变,但是str3指向不可改变
    str2=str3;   //用字符指针指向字符数组,指向内容可改变,指向也可改变


    //这种形式不太建议,因为会令编程更加不可控,无论怎么用strlen,都只能得出3,而不是4
    //且如果作为函数参数,那么就算是用sizeof,也只是把它识别为指针,统一作为4
    char str4[5] = "abc";    
*/
/* 如果在这片内存区域里进行一些修改,那么就要考虑越界的问题 */
/* 另外,为了控制长度,应该采用推荐使用的字符串函数 */
/* 
  char *strncpy(                       //Returns strDest
   char *strDest,                      //Destination string.
   const char *strSource,              //Source string.
   size_t count                        //Number of characters to be copied
  );

  char *strncat(                      //Returns a pointer to the destination string. No return value is reserved to indicate an error
   char *strDest,                     //Null-terminated destination string.
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值