今天看啥
热点:

补充:

q = (char *) malloc(10*sizeof(char) );

如果这么写 能q[1],q[2]这么用吗,为什么?www.BbJia.cOm

#include "stdio.h"
#include "malloc.h"
void main()
{
char *p,*q;

char a[10]; <-------直接就分配内存给它了,它的内存大小就是10*sizof(char) 个字节(sizeof会用吧??)

p = a; <----a的地址给了p,也就是p指向这个内存的最开始那个,和a一样(a其www.BbJia.cOm实是指针,你现在也可以

p[1],p[2]地用,和a[1],a[2], *(a+1),*(a+2), *(p+1),*(p+2)都是一样的
q = (char *) malloc(10*sizeof(char) ); <----申请了10*sizeof(char)个字节的内存空间,(char *)是强制转换成和 q 类型一样哦,别想得太复杂! 这申请的内存空间和上面的a[10]的空间是一样的,只是用这函数更

灵活地分配内存,要多少就申请多少(就刚刚够用不就不浪费!?a[10]的10个不一定全用上啊),

注意的一点就是不用这内存时用free(q),把内存还你好了,呵呵

scanf("%s,%s",p,q);

printf("%s,%s\n",p,q);
}

多用几次就明白的哦

www.BbJia.cOm+1

malloc是分配动态数组存储空间的函数,引用它必需包含头文件"malloc.h"或"stdlib.h",malloc的www.Bkjia.com作用是分配指定字节个内存空间,并返回该内存空间的首地址,但在赋值前必需进行强制类型转换。至于之后p其实就可以作为普通数组进行使用了,你的程序中少了free(p);,要将malloc的空间进行释放。

Www.BKJIA.com+1

回值内存指针,申请内存当前变量的函数www.BbJia.cOm

+1 www.BbJia.cOm char *p; //声明了一个<指向char类型内存>的指针 此时指向的内存为空;
//其实这样的写样不够严谨 保险起见的话应该写成char *p = NULL;
p = (cWww.BKJIA.comhar*)malloc(sizeof(char)*20);//意为向系统申请一个20字节的内存(堆)空间,指针p指向这块内存;
//此时p就不再是一个空指针,而是指向一块大小为20字节的内存,该内存中的数据为char类型 +www.Bkjia.com1

http://czwuhan.blog.163.com/blog/static/5737164620101511535623/edit/?mode=prewww.Bkjia.comv

我博客里的一篇文章就写有关于函数malloc()

+1www.BbJia.cOm

相关推荐

www.bkjia.comtruehttp://www.bkjia.com/doc/179230352.htmlTechArticle补充: q = (char *) malloc(10*sizeof(char) ); 如果这么写 能q[1],q[2]这么用吗,为什么?www.BbJia.cOm #include stdio.h #include malloc.h void main() { char *p,*q; c...

相关文章

相关频道:

帮客评论

视觉看点