可以直接将值赋给指针吗?

标签 c arrays pointers

我无法理解以下代码中对 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[],普通数组类型可以衰减为指针,因此您可以将字符串文字分配给 string2string4.这与调用 print("Good Bye"); 相同,您将衰减的 char* 传递给 printf

关于可以直接将值赋给指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664926/

相关文章:

c - 如何从代码中模拟鼠标事件?

c - 在这些情况下,pthread rwlock 的行为是什么?

javascript - 将对象数组中的对象属性汇总为单个对象 Lodash

javascript array.push(array.push(x)) 奇怪的结果

c++ - 按升序和降序打印链表

java - 是否指向列表中的某些元素,限制列表被GC?

c - 表初始化因变量而失败

c# - 在多维数组中查找值并返回所有项目 c#

c - char * const 和 const char * 有什么区别?

c - RtlCopyMemory PUNICODE_STRING 到 WCHAR 段错误