strcpy函数如何接受地址和字符串常量?

时间:2017-04-06 16:17:58

标签: c function pointers strcpy

void main() 
{
    char str1[10], str2[10] = "haha";
    strcpy(str1, str2);
    puts(str1);
    strcpy(str1, "tictoc");
    puts(str1) ;
} 

如何通过c语言中的预定义strcpy函数将地址和字符串常量传递给指针变量,如上面的代码所示?

1 个答案:

答案 0 :(得分:1)

当一个数组传递给一个函数时,它会衰减成一个指向第一个元素的指针。

如果是第一次通话,str1str都有char [10]类型。当传递给char *时,这些都会衰减为strcpy。类似地,字符串常量"tictoc"具有类型char [7](字符串中的每个字符加一个字节加上终止空字节),它也衰减到char *

期望const参数的函数可以采用相同数据类型的非const版本。 strcpy的第二个参数需要const char *,因此char *也会满足此参数。

另一方面,如果尝试将const变量传递给期望非const类型的函数,则会生成编译器警告。