日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發(fā)布時間:2024/9/27 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ char* 改变长度重新赋值_[C/C++] 2 :分析下列代码有什么问题? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

分析下面代碼有什么問題?

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

解答

  • 代碼無法通過編譯。因為數組名str1為 char *const類型的右值類型,根本不能賦值。
  • 即使想對數組的第一個元素賦值,也要使用 *str1 = 'a';
  • 對字符數組賦值后,使用庫函數strcpy進行拷貝操作,strcpy會從源地址一直往后拷貝,直到遇到'0'為止。所以拷貝的長度是不定的。如果一直沒有遇到'0'導致越界訪問非法內存,程序就崩了。
  • 修改方案
  • void test2() {char string[10], str1[10];int i;for(i=0; i<9; i++){str1[i] = 'a';}str1[9] = '0';strcpy( string, str1 ); }

    相關知識點

  • C 字符串
  • C 庫函數 - strcpy()
  • C 標準庫 - <string.h>
  • 總結

    以上是生活随笔為你收集整理的c++ char* 改变长度重新赋值_[C/C++] 2 :分析下列代码有什么问题?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。