有人能解释一下为什么这个不起作用吗?我是Java开发人员,对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 后回到函数 test
中时,指针 tmp
回到了其初始值。
如果我将所有代码放在单个函数中,就像这样,它可以工作:
void test(char *tmp)
{
*tmp++ = '1';
*tmp++ = '2';
*tmp++ = '3';
*tmp++ = '4';
*tmp = 0;
}
同时,最后一行的
*tmp = 0
是什么意思?我从其他代码中复制了这行代码。没有它,在数组末尾会有一些垃圾数据。
*tmp = 0
)。tmp[0] =
等方法使代码易读。test
依赖于test2
。例如,如果我在test2
中将 tmp 增加了3次,我希望在test
中只从第四次继续执行。这可能吗? - pedjachar
组成的数组来容纳空终止符。 - Sergey Kalinichenko