簡體   English   中英

復制C ++ char指針

[英]Copying c++ char pointers

將值復制到char指針時出現此問題。 如果我寫

char* data = "abcdef";
char* d;

d[0] = data[0];
d[1] = data[1];
d[2] = data[2];
d[3] = data[3];
printf("%s ", d);

輸出為abcd但如果用this for循環替換最后一個塊(基本上是等效的),則不會輸出任何內容

for(int i = 0; i < 4; i++) {
   d[i] = data[i];
}

誰能解釋一下有什么區別?

由於尚未為d分配內存,因此這兩個程序都具有未定義的行為 他們可以自由地以自己喜歡的任何方式行事,包括您描述的方式。

要解決此問題:

  1. d分配內存;
  2. 確保您將d寫入NUL終止符。

PS你分配一個字符串到非的方式const變量不再用C ++有效。 采用

const char* data = "...";
^^^^^

PPS既然已經標記了[c++] ,則可能應該使用std::string而不是原始C字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM