有人可以向我解釋爲什麼這不起作用。我是java開發人員和新的c/c + +
據我瞭解數組指針實際上是數組第一個元素的指針,是否正確?c - 遞增數組指針
void test(char *tmp)
{
test2(tmp);
//*tmp++ = '1';
//*tmp++ = '2';
*tmp++ = '3';
*tmp++ = '4';
*tmp = 0;
}
void test2(char *tmp)
{
*tmp++ = '1';
*tmp++ = '2';
}
int main(int argc, char **argv)
{
char tmp[5];
test(tmp);
printf("%s", tmp);
return 0;
}
只有34
被打印。當我在函數test2
中調試此代碼時tmp
的指針在調用test2後增加1但函數test
後,tmp
的指針返回到其初始值。
如果我只是把所有的代碼在單一功能這樣的,它的工作原理:
void test(char *tmp)
{
*tmp++ = '1';
*tmp++ = '2';
*tmp++ = '3';
*tmp++ = '4';
*tmp = 0;
}
而且什麼就上線了*tmp = 0
做。我從其他代碼複製它。沒有它,陣列末尾會有一些垃圾。
1.字符串空終止(因此'* tmp = 0')。 2.通過使用'tmp [0] ='使代碼可讀。等 –
@Ed癒合這是有效的,這是我嘗試的第一件事,但我不想'test'依賴'test2'。例如,如果我在'test2'中增加tmp 3次,我想在測試中繼續前進。那可能嗎? – pedja
@dasblinkenlight固定 – pedja