考慮這個實施strcpy
:爲什麼字符串複製函數只是指定指針不工作?
void my_strcpy(char target[], char source[])
{
target = source;
}
int main(void)
{
char target[20];
char source[] = "Source String";
my_strcpy(target, source);
printf("Target: %s", target);
return 0;
}
這不工作,它讓我懷疑我的字符串和數組的理解C.
,這裏是我的推理:target
和source
是真正公正的指針,以數組的第一個元素,即。 target == &target[0]
和source == &source[0]
。當我設置target = source
時,我將指針target
指向指針source
指向的同一內存地址。
現在當我printf
target
,它也應該打印"Source String"
。但事實並非如此。
有人可以解釋爲什麼嗎?
您是否期待將'source'複製到'target'或'target'中以指定source的地址?兩者都是錯誤的,順便說一句。 – Downvoter
請注意,C使用[詞法作用域](https://en.wikipedia.org/wiki/Scope_(computer_science)#Lexical_scope_vs._dynamic_scope)。 'my_strcpy'中的'target'變量與'main'中的'target'變量不同。因此,即使你給了它們相同的名字,它們也不是同一個變量。 – user3386109