char* strcpy (char* destination, const char* source);
在(地址)源給定的值是常量,因爲函數的作者想表明源的值不會改變功能通過strcpy。指針本身並沒有被strcpy改變。爲什麼不寫
char* strcpy (char* destination, const char* const source);
非常感謝提前。
char* strcpy (char* destination, const char* source);
在(地址)源給定的值是常量,因爲函數的作者想表明源的值不會改變功能通過strcpy。指針本身並沒有被strcpy改變。爲什麼不寫
char* strcpy (char* destination, const char* const source);
非常感謝提前。
你會看到如果你試圖實現這兩個功能,他們實際上是相同的。此時的const
修飾符僅對函數的主體有意義,因爲無論如何參數都是按值傳遞的。
error: function "strcpy" has already been defined
char* strcpy (char* destination, const char* const source)
指針本身是按值傳遞的,所以沒有意義。
它也可以這樣寫,但它不會影響調用者。
在第二種情況下,原型表示指針本身不應被修改,但調用者的指針不能被修改,因爲它在調用函數時被複制(通過值傳遞)。
通過值與const
傳遞的標記變量僅對函數的實現者有用,作爲使他的意圖清晰的方式。
如果我將函數體內的源設置爲NULL後發送指向目標的指針,會發生什麼? – Toru
用作函數參數的本地副本'source'將被設置爲NULL,而不是傳遞給它的參數。 –
好的,非常感謝! – Toru