C语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?

C语言中char*a[]什么意思,他和char(*)a[]有什么什么区别?... C语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别? 展开
 我来答
问明6E
高粉答主

2019-05-18 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.8万
展开全部

两者区别如下:

一、”读“”写“能力

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";存于栈上。快。

四、内存分配方式

内存分配有三种:堆区和栈区、静态存储区。功能不同;使用方式也不同。

1、栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 

2、堆:就是那些由new或malloc分配的内存块,在不适用时,要手动用delete或free来释放内存区域。

3、静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。

但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,并立即将指针置位NULL,防止产生野指针

参考资料:

百度百科——atof

小小的KEIS
2013-09-21 · TA获得超过276个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:143万
展开全部
含义是一样的。其实数组也是指针。都是声明了a这个char*类型数组。虽然有语法错误,但是意思是那样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狂盗一枝梅
2013-09-21 · TA获得超过123个赞
知道答主
回答量:131
采纳率:100%
帮助的人:51.1万
展开全部
char *a[]一般用于函数中形参的声明,特别只用于一维数组;char(*)a[]不明白什么意思,难不成是将a数组强制转换成字符型???只是猜测,不要多想呵。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Star1314JR
2013-09-21
知道答主
回答量:15
采纳率:0%
帮助的人:20.5万
展开全部
char* a[]:a首先是个数组,数组中的每个元素是char*类型的,也就是每个元素是一个指向char类型的指针,至于char(*)a[],圆括号一般是用作强制类型转换的,这种写法没有见过,编译器应该分析不出这个语法,会报错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友11b026f
推荐于2017-09-06 · TA获得超过754个赞
知道小有建树答主
回答量:786
采纳率:0%
帮助的人:470万
展开全部
char *a[]表示的是数组a[]是一个指向char的指针类型数组,相当于a[]里面的每一个元素都实际值都是一个指向字符串的指针(即存储某个字符串的首地址)

后面这个你应该要问的是char (*a)[]吧,不然的话就和第一个一样了
char (*a) [N]表示的是指向一个元素为N的字符串数组的指针,说白了就是一个数组指针(指向数组的指针)。这个和函数指针有点像 int (*p) (int,int),表示指向返回值为int,并且含有2个int变量的函数
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式