C语言字符数组和指针的关系?

#include<iostream>usingnamespacestd;voidreverse(char*s){char*p,*q,temp;p=s;q=s+strlen... #include <iostream> using namespace std; void reverse(char* s) { char *p,*q,temp; p = s; q = s + strlen(s) - 1; while(p<q) { temp = *p; *p = *q; p++; q--; } } int main() { char name[] = "abcdef"; //为什么换成 char* name = "abcdef";就错误? reverse(name); cout<<name<<endl; return 0; } 展开
 我来答
茅好慕渊
2019-01-25 · TA获得超过3583个赞
知道大有可为答主
回答量:3105
采纳率:31%
帮助的人:453万
展开全部
这是编译程序处理数组和指针的方式不同导致:
1、对于数组,虽然数组名称也是类似指针一样是存储的数组的起始地址,但编译程序在处理数组初始化时,内部会自动生成一个偏移量指针,然后将初始化数据使用偏移量指针,根据初始化数据的数据类型所在字节数移动,存储在内存中。
2、对于单纯定义的指针,系统仅仅认为就是存储的内存地址,不会再做额外的工作,甚至在定义时,连内存区域都没分配,所以指针是NULL,如果指针要存储字符串,那么需要你自己手动写程序,可以使用链表的方式,如果只有头指针,那么需要为字符串人为做结束标志,否则,可以定义一个尾指针指向字符串的最后一个字符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式