题目

分析下面代码有什么问题?

void test2()
{ char string[10], str1[10]; int i; for(i=0; i<10; i++) { str1  = 'a'; }
strcpy( string, str1 );
}

解答

  1. 代码无法通过编译。因为数组名str1为 char *const类型的右值类型,根本不能赋值。
  2. 即使想对数组的第一个元素赋值,也要使用 *str1 = 'a';
  3. 对字符数组赋值后,使用库函数strcpy进行拷贝操作,strcpy会从源地址一直往后拷贝,直到遇到'0'为止。所以拷贝的长度是不定的。如果一直没有遇到'0'导致越界访问非法内存,程序就崩了。
  4. 修改方案
void test2()
{char string[10], str1[10];int i;for(i=0; i<9; i++){str1[i]  = 'a';}str1[9] = '0';strcpy( string, str1 );
}

相关知识点

  1. C 字符串
  2. C 库函数 - strcpy()
  3. C 标准库 - <string.h>

c++ char* 改变长度重新赋值_[C/C++] 2 :分析下列代码有什么问题?相关推荐

  1. Java不同长度数组赋值_定义一个数组时可以先不赋初值,但一定要确定数组的长度...

    [多选题]识别层理主要是根据( )这几个方面来识别. [多选题]层理是通过岩石的( )在岩层垂直断面上的突变和渐变所显示出来的一种成层构造. [单选题]在使用JDBC API的PreparedStat ...

  2. 怎样改变java编码风格_如何说服同事修改些代码的风格(JAVA的)。。求指引

    代码如下: //同事的... public interface IXXXSV{ public int getXXXByList(Map map,ArrayList ColumnList,ArrayLi ...

  3. byte初始化并赋值_一位数组的定义、赋值和初始化.note

    当数组中每个元素都只带有一个下标时,这种数组就是"一维数组".一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组. ...

  4. 微信小程序——数组操作 (增加删除修改遍历)map、filter、forEach、find的用法、二维数组,排序,求和、指定长度数组赋值

    一.数组的操作 Array.push() ->在数组后面继续插入内容 Array.pop() ->拿走数组最后一个内容 Array-shift()->拿走数组的第一个内容 (unsh ...

  5. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事

    一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...

  6. 定义一个 圆形 Circle类 , 定义其中的长度length属性,定义一个求面积getArea()的方法。 并编写一个测试类,进行长度的赋值和展示,并调用求面积方法展示面积值。

    定义一个 圆形 Circle类 , 定义其中的长度length属性,定义一个求面积getArea()的方法. 并编写一个测试类,进行长度的赋值和展示,并调用求面积方法展示面积值. public cla ...

  7. 面试题 数组长度可否赋值

    public class ArrayLength {public static void main(String[] args) {String a[] = new String[10];a.leng ...

  8. 对象属性结构赋值_(六)面向对象-下

    (六)面向对象-下 关键字:static static 可以用来修饰的结构:主要用来修饰类的内部结构 属性.方法.代码块.内部类 static修饰属性:静态变量(类变量 属性,是否使用static修饰 ...

  9. vba单元格批量赋值_「经验」快速学习VBA

    ▌序 在知乎上有很多朋友问VBA如何入门?看着代码密密麻麻看不进去. 我想说,我刚开始看也是看着代码也是挠头,但是没办法,要解决批量处理excel的相关问题VBA再好不过.一定要坚持. 我理解的入门, ...

最新文章

  1. 哪个版本python适用于windows-何种版本的Python适合您
  2. sap 客户信贷配置与管理解析
  3. 0x00000000指令引用的内存不能为written_「深入Java虚拟机」Java内存区域与内存溢出...
  4. Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
  5. dot-- 资源汇总
  6. btoa java_javascript atob()函数和 btoa()函数-Base64的编码与解码-Go语言中文社区
  7. 腾讯云自曝自家技术只值1分钱,这技术以后谁还敢用
  8. Batch Normalization的意义
  9. PSD模版如何变成网页模版 (转载)
  10. 基于Delphi7的木马程序的查杀设计与实现
  11. 2020年美赛C题(数据分析题)O奖论文笔记 (2)
  12. Boost.Asio 网络编程([译]Boost.Asio基本原理)
  13. Jetty启动项目失败?两个命令解决address already in use问题
  14. 关于travis scott的网名_2020微信情侣名字情侣专用 霸气秀恩爱的情侣网名
  15. 微信网页版扫码登录是如何实现的?
  16. 消防管道标志色号_消防标志的起步问题
  17. Ceph分布式存储系统优化分析
  18. 28岁转行web前端,参加成都前端web培训可行吗?
  19. 计算机四级网络工程师考点总结
  20. 从现在看未来,在未来看现在

热门文章

  1. 果断拿下4000万美元D轮融资,Rancher发力中国本土化与国产化!
  2. linux如何设置mac快捷键,在Ubuntu上使用macOS的快捷键
  3. java读取空格_java 读取文件路径空格和中文的处理
  4. android 高度上分权重,Android LinearLayout weight权重使用
  5. vue+vant 移动端H5 商城项目_03
  6. 秒杀场景_Sentinel在秒杀场景的应用_05
  7. (企业案例)使用Nacos持久化规则,改造sentinel-dashboard
  8. ETL异构数据源Datax_Oracle同步MySQL(全量)_04
  9. Flowable 数据库表结构 ACT_HI_IDENTITYLINK
  10. (需求实战_03)_shell脚本 sftp协议下载文件