c语言指针申请空间问题(简单)

2024年11月28日 22:34
有5个网友回答
网友(1):

这个你只要了解指针的用法你就明白了,指针是指向地址的一个数据类型 比如int b = 2; int *a = &b;那么a就指向b所在的地址。最通俗的就是a是门牌号b是房子,吧a挂在b上你就可以通过a找到b;并且如果不限制你,你也可以进入这个房子修改里面的东西。 回来说你上面的问题,如果换成
char *c;那么c就是个门牌号,如果不用malloc申请空间,就相当于只有门牌号没有房子,你通过c这个门牌号找到的房子不是你的,但是你还欺骗这些字符串说这里有房子,他们相信你了,他们进去了就和原来主人打架,然后就把房子拆了这就出错了。malloc相当于给你自己建房子,你就可以合法居住了。每个门牌号都要有一个属于自己的合法房子所以你说的移到下一个数据域时还要重新申请空间,是因为你的门牌号变了!!!!

网友(2):

char c[80]; //你为c开设了80个字节的存储区来折腾
char *c; //你没有开设存储区,那么如何或者说在哪里去倒腾字符串呢?
char *a="I am"; //这里虽然自己没有开设空间,但是偷懒行为,是依赖系统的常数存储区
char a[]="I am"; //或者写char a[5]="I am";才是正常写法,是自己开设的存储区
不是自己开设的变量和存储区操作起来容易出系统错误。
int a; int *p; p=&a; //虽然你在赋值阶段没有直接为p开设存储区,但p=&a;实现了让p指向自己开设
//的a变量存储区来进行后续操作
链表中作为指针一定在使用前要确认指向自己程序开设的存储区,否则就要出错;移到下一个数据域时如果这个域你没有申请存储区那么可以认为是不存在的,所以需要用malloc开存储区

网友(3):

char c[80]; 操作系统执行时会给程序分配80Byte的连续栈内存空间,如果写成char *c 则只是一个指针而已,不会分配连续的空间以存放字符串的。

而char * a = "blabla";
这里的"blabla"位于呈程序的字符串常量区,程序被装入的时候就会分配地址。, char* a 也只是一个指针而已。

关键在于“分配地址空间”

网友(4):

malloc申请内存空间是有风险的,如果内衣这么个连续的内存空间,那么申请内存空间就会报错,用数组最保险

在链表中,每个节点都必须重新申请内存空间,

网友(5):

为指针申请存取数据的内存啊