我无法理解以下代码中对 string2 的赋值:
#include <stdio.h>
void copy1( char * const s1, const char * const s2 ); /* prototype */
void copy2( char *s1, const char *s2 ); /* prototype */
int main( void )
{
char string1[ 10 ]; /* create array string1 */
char *string2 = "Hello"; /* create a pointer to a string */
char string3[ 10 ]; /* create array string3 */
char string4[] = "Good Bye"; /* create a pointer to a string */
我认为指针只能初始化为 NULL、0 或地址。可以直接将值赋给 char * 数据类型吗?
最佳答案
指针变量可以被赋值为NULL
(定义为0)、变量的地址或另一个指针的值。字符串文字的类型为 char[]
,普通数组类型可以衰减为指针,因此您可以将字符串文字分配给 string2
和 string4
.这与调用 print("Good Bye");
相同,您将衰减的 char*
传递给 printf。
关于可以直接将值赋给指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664926/