[英]how can strcpy function accept both adress as well as string constant?
void main()
{
char str1[10], str2[10] = "haha";
strcpy(str1, str2);
puts(str1);
strcpy(str1, "tictoc");
puts(str1) ;
}
如上代碼所示,如何通過c語言中預定義的strcpy函數將地址以及字符串常量傳遞給指針變量?
將數組傳遞給函數時,它會衰減為指向第一個元素的指針。
在第一次調用的情況下, str1
和str
都具有char [10]
類型。 當傳遞給strcpy
時,它們每個都退化為char *
。 同樣,字符串常量"tictoc"
類型為char [7]
(字符串中每個字符一個字節加上終止的空字節),該類型也衰減為char *
。
期望const
參數的const
可以采用同一數據類型的非const版本。 strcpy
的第二個參數期望使用const char *
,因此char *
也將滿足此參數。
另一方面,如果您嘗試將const變量傳遞給需要非const類型的函數,則會生成編譯器警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.