考虑下面的代码:复制串在C - 内存问题:
t[7] = "Hellow\0";
s[3] = "Dad";
//now copy t to s using the following strcpy function:
void strcpy(char *s, char *t) {
int i = 0;
while ((s[i] = t[i]) != '\0')
i++;
}
上面的代码是从“C编程语言的书”拍摄。 我的问题是 - 我们复制7个字节到声明为3个字节。 我如何知道复制后,内存 中s []后的其他数据未被删除?
还有一个问题请:char *s
与char* s
相同?
谢谢!
本来我误解了这个问题。在全局作用域(例如't [7] =')你不能有表达式语句,你的函数参数s'和't'掩盖全局变量s'和't'。你从哪里得到这本书,肯定不是K&R的“The C Programming Language”。 – 2010-08-14 10:35:26
请确保您的代码在发布之前进行编译。 – qrdl 2010-08-14 10:52:09
你没有复制任何东西 - 没有调用strcpy函数。此外,函数中的s和t是提供的参数,与上面声明的t和s完全无关。 请提供完整的代码。 – Dipstick 2010-08-14 11:22:24