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

两者区别如下:

一、”读“”写“能力

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

dd8ee2e42ba9006b1b939e2a72a6199c.png

四、内存分配方式

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

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

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

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

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

参考资料:

百度百科——atof

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值