C语言指针变量问题

C语言指针一直学得云里雾里,今天刷题,虽然做对了,但是不明白原理,求大佬指点..
题目:设char s[6],*ps=s;,则正确的赋值语句是()

A.s="12345";
B.*s="12345";
C.ps="12345"
D.*ps="12345";

这个题答案是选C,但我不明白其中的原理。ps代表的不是字符数组首元素的地址吗? 为什么把"12345"可以直接赋给这个地址? 我只知道 *ps代表的是数组首元素.

阅读 2.6k
2 个回答

ps="12345"
对 ps 赋值,ps指向字符串常量"12345"

双引号做了3件事:

  1. 申请了空间(在常量区),存放了字符串
  2. 在字符串尾加上了'/0'
  3. 返回地址

数组名就是数组地址

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题