看的清吗
这里为什么不能用char *c;?后面说用了char *c 要(char *)malloc申请空间就可以这么干,为什么?还有在链表里面也是这样,p是指向数据域的指针,一开始malloc申请空间了之后,为什么移到下一个数据域的时候还要重新malloc申请空间?望详细解答
那int *p;p=&a;为什么可以不用malloc 我虽然知道这个比较不太好,但是大致意思就是什么时候该用malloc?还有链表里面,定义了*p,第一个malloc我已经有点不理解了,结果它p=q;之后p又一次malloc申请了空间。。。看不懂啊。为什么有的指针可以直接用 有的却要malloc?
追答int *p=&a;p就可以不用malloc。a就好比是一个房子,p挂上牌子就被p占领了,所以p不用另外再造房子。 p=q;之后之所以还要申请空间是因为p指向的地址已经变了,所以另需分配。建议你去看一下指针的基础概念。
谢谢啊
本回答被网友采纳那int *p;p=&a;为什么可以不用malloc 我虽然知道这个比较不太好,但是大致意思就是什么时候该用malloc?还有链表里面,定义了*p,第一个malloc我已经有点不理解了,结果它p=q;之后p又一次malloc申请了空间。。。看不懂啊。为什么有的指针可以直接用 有的却要malloc?
追答指好了位置的指针就是好指针,可以拿来用。没指对地方的指针拿来用就有问题。malloc可以去看看malloc详解,malloc/ free对比一下C++的new/ delete来理解。
追问谢谢啊
那int *p;p=&a;为什么可以不用malloc 我虽然知道这个比较不太好,但是大致意思就是什么时候该用malloc?还有链表里面,定义了*p,第一个malloc我已经有点不理解了,结果它p=q;之后p又一次malloc申请了空间。。。看不懂啊。为什么有的指针可以直接用 有的却要malloc?
c语言指针申请空间问题(简单)
这个你只要了解指针的用法你就明白了,指针是指向地址的一个数据类型 比如int b = 2; int *a = &b;那么a就指向b所在的地址。最通俗的就是a是门牌号b是房子,吧a挂在b上你就可以通过a找到b;并且如果不限制你,你也可以进入这个房子修改里面的东西。 回来说你上面的问题,如果换成 char *...
简单问题,关于c语言指针申请空间
不知道是不是楼主没有把这部分代码打出来,但就这段代码来看,你的指针数组*s[]好像还没有定义就先使用了。在函数的申明部分(即定义变量的部分),要加上一句定义语句: struct point *s[30];而且这一句,struct point *s[i] = (struct point *)malloc(sizeof(struct point));在申请空间时,...
C 语言指针问题,急!
一是先统计不及格人数p,再c=(int *)malloc(p*4*sizeof(int));然后再重新来一次循环,把不及格人的信息存入c。二是一上来就c=(int *)malloc(num*4*sizeof(int));,然后在查找不及格人的同时,就可以向c写数据了。另外,你还需要设一个变量来保存不及格人数,而且这个变量最好是做为failed...
C语言指针变量问题
ptr的类型为(int *),所以ptr在内存里面存放的就是int类型的指针,指向了某个int地址。正常情况下,你可以通过ptr访问它指向的某一个地址里面的数据,如下图可以看到22。你这里的程序里面有一个malloc函数,它的功能就是申请空间,本来只有一个空间的,申请之后就可以有很多连续的空间了。这个时候如果ptr...
C语言中,怎么使用malloc函数为数组指针分配空间 比如要为char *p...
还可以像每个指针中赋值字符串: p[2]="Beijing"; 当然字符串长度应该小于N。而数组指针,是指定义为指向某个固定大小顺序空间的指针,定义的格式如下:char (*pa)[10]; \/\/定义一个指向拥有10元素的字符数组的指针,int (*p)[10];应用格式可以参考下述程序,申请空间、赋值、输出后,可以观察...
c语言 数据结构 关于申请结点空间
根据编译器不同,一般情况下默认为NULL。有的编译器会给一个较大的负数,这样要自己置NULL。理论上讲,任何一个指针,包括指向下一结点的指针,都必须指向一有效的被分配的地址
关于C语言的字符串指针的问题?
它指向的内容也不可通过这个指针修改(用其他方法修改内容仍然是可以的)。数组名是常量指针,所以指针不能再指向别处(即改变指向)。这个问题中,p是普通指针,所以可以改变指向;p指向的内容是由malloc申请的自由空间,所以它们的内容肯定是能够改变的,否则申请这个空间就没有多少意义了。
C语言结构体指针数组初始化问题
\/\/申请空间 ppaas =(PPAAS)new aa *[500];\/\/new以后,这个空间(数组)存放500个指针,ppaas 指向这个空间,使用时需要再对每个元素去分配内存。\/\/比如 (*ppaas)[0] = new aa;(*ppaas)[0]->age = 100;(*ppaas)[0]->name = "sdfsdf";\/\/--- ppbbs = NULL;ppbbs =(PPBBS)new ...
C语言中,定义一个指针的时候为这个指针开辟存储空间吗?
int *p :一级指针,表示p所指向的地址里面存放的是一个int类型的值,声明p为指向整型数的指针,这时为这个指针分配了存储空间。但这时其中是随机数,我们称它为指向一个不确定的内存地址。用户说的“直接*p=5”,那么就会在一个无法预知的内存地址写入一个整型数5。这是不允许的,可能导致程序崩溃。
c语言指针问题
就是 char *p=*s; 或 等价于: 声明 char *p; 语句 p=*s; 让 p 指向 char s[3][8];的始地址 &s[0][0]。 目的是 让 p 有了字符\/字符串存放空间。你也可以理解: p=*s; 即 p= *(s+0); 即 p=s[0]; p=&s[0][0];p 有了字符\/字符串存放空间...