c++ - 分配一个指向数组的指针不起作用但反过来很好
问题描述
a 中的值被复制到 c 指针:
char a[] = "I am ok";
char *c = a;
得到编译错误:
char *c = "I am ok";
char a[] = c;
为什么?
解决方案
数组只能使用聚合初始化来初始化(文字字符串的特殊情况,如第一种情况所用)。
根据语言,第二种情况下的初始化部分根本不正确。
此外,文字字符串(在第二种情况下的初始化中使用c
)是常量字符数组,这意味着您不能创建指向文字字符串的非常量指针。您必须使用const char*
.
至于为什么它在第一种情况下起作用,首先数组a
不是常量,因此不需要指向const
. 其次,当使用数组时,它可以衰减为指向其第一个元素的指针。
所以定义:
char* c = a;
真的是这样:
char* c = &a[0];
推荐阅读
- python - 覆盖 libc open() 导致 python os.popen().read() 挂起
- couchdb - 从 CouchDB 数据库中清除所有非当前数据的推荐过程是什么?
- angular - 描述中定义的变量在角度测试的外部函数中是“未定义的”(jest/jasmine)
- android - Stripe Android - 为错误消息设置区域设置
- php - 使用 curl 和 crontab 执行 api 请求而不是正常工作
- python - 如何在 boto3 中使用 send_raw_email 指定回复?
- ruby-on-rails - Rails::TestUnitReporter 找不到 MiniTest::Result 测试的方法
- python-3.x - 生成二进制编码符号 Python 程序
- sql-server - 为其他用户禁用 SQL Server 登录弹出窗口
- r - 创建具有时间戳增量的数据框行