这两种类型的区别如下:
1.“读取”和“写入”功能
char*a="abcd";存储在恒定区域。您只能通过指针访问字符串常量,但不能更改它们。
还有chara[30]="abcd";现在“abcd”存储在堆栈中。数组内容可以通过指针访问和修改。
2.时间分配
char*a="abcd";在编译时确定(因为它是一个常量)。
chara[30]="abcd";在运行时确定
3.指向的地址中存储的值是不同的。
对于char**p1,类型*p1是char*类型,类型**p1是char类型。
对于指针类char*p2,*p2的类型为char。
char*a="abcd";存储在静态存储区中。堆栈上的数组比指针指向的字符串更快。慢
chara[30]="abcd";存储在堆栈中。快速地。
4.内存分配方式
内存分配有三种类型:堆、栈、静态存储。功能不同;使用方法也不同。
1.堆栈:这是变量的存储区域,需要时由编译器分配,不需要时自动清除。内部变量通常是局部变量、函数参数等。
2.堆:是由new或malloc分配的一块内存。当不适用时,必须手动使用delete或free来释放内存区域。
3.静态存储:在程序编译时分配的内存,并且在程序运行期间持续存在。主要存储静态数据、全局数据、常量。
但是,好的编程习惯是:如果动态内存不再使用,则应将其释放,并立即将指针设置为NULL,以防止创建野指针。
参考资料:
——atof
上一篇:技嘉主板内存超频开不了机
下一篇:字符型常量在内存中存放的是