| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 384 人关注过本帖
标题:一个关于动态数组的问题
只看楼主 加入收藏
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:9 
一个关于动态数组的问题
#include "stdio.h"
#include<malloc.h>
void main()
{int len;
    int * p=(int *)malloc(4*len); //这里的malloc(4*len)为什么改成malloc(1*len)它一样可以输入len个元素,1*len不是只有len个字节吗?
    int i;
    scanf("%d",&len);
    for(i=0;i<len;i++)
    scanf("%d",p+i);
    for(i=0;i<len;i++)
    printf("%d   ",*(p+i));
  
}
搜索更多相关主题的帖子: 动态 include 
2012-12-29 20:58
ksddah
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:135
注 册:2012-12-11
收藏
得分:0 
应该是这样吧 int * p=(int *)malloc(sizeof(len));
2012-12-29 21:06
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
这代码有问题啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-29 21:08
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
收藏
得分:0 
回复 2楼 ksddah
你这样也可以。。我那样也没有错。。我的是根据视频上面的教程而写的。也不太明白这里的意思。。我改为这样也没有问题。。
也一样可以。
2012-12-29 21:12
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
收藏
得分:0 
回复 3楼 yaobao
哪里有问题了。。我就是不太明白int * p=(int *)malloc(4*len);这里到底是什么意思。int * p=(int *)malloc(len*sizeof(int));这样又是什么意思int * p=(int *)malloc(sizeof(len));这样又是什么意思。。
2012-12-29 21:13
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
回复 5楼 LOVE燕
你说的这三样只有最后一种是正确的
int * p=(int *)malloc(sizeof(len));
如果这段代码是你自己写的,那么同学我真心奉劝你好好看一遍基础知识,这段代码表现出最大的问题就是基础不牢靠,我感觉你还没有搞清楚什么事变量,什么事类型。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-29 21:20
ksddah
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:135
注 册:2012-12-11
收藏
得分:0 
4*len,len*sizeof(int),sizeof(len)都是int型的,如果len为负的话,malloc(4*len)会是什么意思呢?分配负数个字节的内存?感觉这样很怪,编译会通过吗?
2012-12-29 21:21
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
当然不会,如果你看过malloc的原型就会知道malloc的参数是个unsigned int 类型的,楼主的malloc(4*len)这个参数根本就是个没有初始化的变量,怎么能通过呢

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-29 21:29
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
收藏
得分:0 
那可以说说这个的意思吗int * p=(int *)malloc(sizeof(len))?
2012-12-29 21:50
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:20 
在内存中申请一段空间,空间大小为sizeof(len),因为len是int型的变量,所以等价于sizeof(int),将malloc返回的指针转换成int*类型并赋值给刚定义的int* 变量 p。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-29 22:04
快速回复:一个关于动态数组的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011808 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved