void main()
{
char str1[10], str2[10] = "haha";
strcpy(str1, str2);
puts(str1);
strcpy(str1, "tictoc");
puts(str1) ;
}
如何通过c语言中的预定义strcpy函数将地址和字符串常量传递给指针变量,如上面的代码所示?
答案 0 :(得分:1)
当一个数组传递给一个函数时,它会衰减成一个指向第一个元素的指针。
如果是第一次通话,str1
和str
都有char [10]
类型。当传递给char *
时,这些都会衰减为strcpy
。类似地,字符串常量"tictoc"
具有类型char [7]
(字符串中的每个字符加一个字节加上终止空字节),它也衰减到char *
。
期望const
参数的函数可以采用相同数据类型的非const版本。 strcpy
的第二个参数需要const char *
,因此char *
也会满足此参数。
另一方面,如果尝试将const变量传递给期望非const类型的函数,则会生成编译器警告。