char *a[N] 和char (*a)[N]有什么区别?

 我来答
小耳朵爱聊车
高粉答主

2019-10-30 · 说的都是干货,快来关注
知道大有可为答主
回答量:7378
采纳率:100%
帮助的人:288万
展开全部

一、”读“”写“能力

char*a="abcd";此时"abcd"存放在常量区。通过指针只可以访问字符串常量,而不可以改变它。

而char a[30]="abcd";此时"abcd"存放在栈。可以通过指针去访问和修改数组内容。

二、赋值时刻

char*a="abcd";是在编译时就确定了(因为为常量)。

char a[30]="abcd";是在运行时确定

三、指向地址所存储的值不同。

对于char**p1,*p1的类型为char*型,而**p1的类型才是char型。

对于char*类指针p2,*p2就是char型。

char*a="abcd";存于静态存储区。在栈上的数组比指针所指向字符串快,慢。

char a[30]="abcd";存于栈上,快。

扩展资料:

char型数据是计算机编程语言中只可容纳单个字符的一种基本数据类型,分为两种,一种是无符号整型数据类型(unsigned char),另一种是有符号整型数据类型(signed char)。

char的取值范围: -2^7 ~ 2^7-1 ;signed char: -2^7 ~ 2^7-1;unsigned char : 0 ~ 2^8-1。

而且关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串。

参考资料来源:百度百科-atof

a652570001
2012-05-04 · TA获得超过129个赞
知道答主
回答量:153
采纳率:0%
帮助的人:170万
展开全部
两者的区别是char *a[]定义了一个指针数字,即a的每个元素都是字符数组,也就是a是个二维数组;而char(*a)[]定义的是指向*[n]的指针,也就是指向二位字符数组的指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lordspring6
推荐于2018-03-11 · TA获得超过219个赞
知道答主
回答量:45
采纳率:0%
帮助的人:40.9万
展开全部
由于[ ]比*优先级要高,因此a先与[n]结合,形成a[n]形式,这显然是数组形式,它有n个元素。然后和*结合,*表示此数组时指针类型的,每个数组元素都指向一个char型的变量。
*a[N] (*a)是一个指针有n个元素,每个元素为char型。也就是a指向的对象是有4个char元素的数组,即a是指向一维数组的指针。因记住,此时a只能指向一个包含n个元素的一维数组,a的值就是一维数组的起始地址
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式