动态数组与char *string有什么区别?

WezZai 2004-12-03 10:34:22
各位大虾:
本人初学C.已经学了快一个月了.始终在一个问题上绕圈子.
书上说用malloc来分配内存空间.可以解决编译未确定的变量空间问题.
可我在确感觉不到有什么优越性.
指针似乎就可以实现动态数组问题.

下面是书上的用malloc分配空间给数组.
int *array=NULL,num,i;
scanf("%d",&num);
array=(int *)malloc(sizeof(int)*num);
printf("input %d elements:",num);
for (i=0;i<num;i++) scanf("%d",&array[i]);
printf("%d elements are:",num);
for (i=0;i<num;i++) printf("%d,",array[i]);
printf("\b");
free(array);

而我不用malloc分配动态内存.直接用指针也照样能解决编译没确定的空间在小问题.
int *array,*address;
int i,num;
address=array;
scanf("%d",&num);
for (i=0;i<num;i++)
{
scanf("%d",array);
array++;
}
array=address;
for (i=0;i<num;i++)
{
printf("this n:%d\n",*array);
array++;

}
效果一模一样..我真的好疑惑.为什么要用malloc来解决..难道指针不是一样的么?
各位大侠99我...我卡在这里面了...
...全文
111 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Michael_555 2004-12-03
  • 打赏
  • 举报
回复
没有malloc, 效果也是一模一样?!

唯一可以解释这个现象的理由是你的运气很好。

不信你多试几次。


这样你就知道使用一个不确定指针的害处了。
WezZai 2004-12-03
  • 打赏
  • 举报
回复
现在清楚了..


只要没意外.或者系统有足够空间的话.还是可以直接用指针的.

malloc的实质是提供了保险性而已...

谢谢各位解开我心中的疑惑...3Q
WezZai 2004-12-03
  • 打赏
  • 举报
回复
这个我也想过..

只是书上没提到过这里.我还以为碰到这种情况了只能用malloc分配呢.

Leaveye 2004-12-03
  • 打赏
  • 举报
回复
指针的内容纯粹只是一个数字表示的地址。该地址值处是否有足够的空间可用还要依赖于系统。

未赋值前是个随意值,可能指向本程序的运行代码,甚至系统运行代码,擅自修改可能引起系统崩溃。

通过分配内存,可以保证得到的所需空间均为可用。但要牢记,用后要释放。操作系统可不会清楚你什么时候不需要这块内存了的。
hunter606 2004-12-03
  • 打赏
  • 举报
回复
黨不使用malloc分配內存時,array與address的值
是一個任意的值,這樣就有可能指到內存中的一個非
法的位置,對這樣的內存進行讀寫操作時就有可能引
發錯誤

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧