当前位置: 代码迷 >> C语言 >> 动态分配问题
  详细解决方案

动态分配问题

热度:300   发布时间:2007-07-24 20:15:42.0
动态分配问题

#include <stdlib.h>
#include <stdio.h>

int main( )
{
int *p=malloc(100);
for(int i=0; i<10; i++)
p[i]=i*i;
for(int i=0; i<10; i++)
printf("%d\n", p[i]);
free(p);
int *q=malloc(100);
for(int i=0; i<10; i++)
q[i]=i;
for(int i=0; i<10; i++)
printf("%d\n", p[i]);

}
这个程序可以这样写吗?先对指针P动态申请,然后赋值的时候怎么就可以当数组来用呢?还有既然把它当数组为什么释放的时候不一个一个地释放呢?希望大家帮帮忙。


----------------解决方案--------------------------------------------------------
还有这个程序有几个编译错误可是我不知道怎么改
----------------解决方案--------------------------------------------------------

#include <stdlib.h>
#include <stdio.h>

int main( )
{
int *p=(int*)malloc(100);

for(int i=0; i<100/sizeof(int); i++)
p[i]=i*i;
for(i=0; i<100/sizeof(int); i++)
printf("%d\n", p[i]);
free(p);

int *q=(int*)malloc(100);

for(i=0; i<100/sizeof(int); i++)
q[i]=i;
for(i=0; i<100/sizeof(int); i++)
printf("%d\n", p[i]);

return 0;
}

这样试试


----------------解决方案--------------------------------------------------------
定义时[]和使用时[]是有差别的
定义时[]就是定义数组的
使用时[]是地址解析符
这个要理解
----------------解决方案--------------------------------------------------------