[英]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
分配內存,因此這兩個程序都具有未定義的行為 。 他們可以自由地以自己喜歡的任何方式行事,包括您描述的方式。
要解決此問題:
d
分配內存; d
寫入NUL終止符。 PS你分配一個字符串到非的方式const
變量不再用C ++有效。 采用
const char* data = "...";
^^^^^
PPS既然已經標記了[c++]
,則可能應該使用std::string
而不是原始C字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.