| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1418 人关注过本帖
标题:[求助]关于指针的困惑
只看楼主 加入收藏
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 

哦```原来sizeof是字节的意思啊```

那就明白malloc(5*sizeof(int))的意思了```

但是(int *)还不明白``感觉是定义一个指针参数``



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-24 20:15
windflush
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:886
专家分:0
注 册:2007-7-1
收藏
得分:0 
以下是引用死了都要C在2007-8-24 20:06:22的发言:

看不懂```
为什么要在malloc前加(int *)
malloc后面的(5*sizeof(int))是什么意思啊```



以前用malloc申请的空间是void型,需要强制转化成需要的类型,所以要加例如(int *)的东西。
C99规定可以直接写成p=malloc( )的形式。

至于你malloc(5)是指申请5个字节的空间。
写成malloc(5*sizeof(int))的原因是为了移植性高,因为不是所有机子上的int所占的空间都一样的,例如32位机子上一般int是2个字节,而64位机上就是4个字节了。

还有p=malloc(5);是指p指向一块大小为五个字节的内存,不是说他相当于p[5];



2007-08-24 20:15
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
以下是引用死了都要C在2007-8-24 20:15:15的发言:

哦```原来sizeof是字节的意思啊```

那就明白malloc(5*sizeof(int))的意思了```

但是(int *)还不明白``感觉是定义一个指针参数``


你声明了int *p;
然后(int *)malloc……
使类型一样呀
所以说你在前面生命的呀……


You have lots more to work on! Never give up!c language!
2007-08-24 20:19
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 

哦`````那看看我下面的说法对不对```

如果定义的指针是char/float,那么:

#difine N 5

char/float *p=mallco( N*sizeof(char/float) );

这样写没有错吧``

又有一个问题``我们用mallco得到的内存单元是连续的吗?

如果是连续的话```那么 *(p+1) 可以写成 p[1] 吗?




女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-24 20:26
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

是malloc


You have lots more to work on! Never give up!c language!
2007-08-24 20:29
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

应该可以
malloc是动态分配内存


You have lots more to work on! Never give up!c language!
2007-08-24 20:33
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
哦``不好意思``刚学的竟然忘了```改下```

char/float *p = (char/floa *)tmallco( N*sizeof(char/float) );

这下应该没什么问题了吧````


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-24 20:36
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
晕```怎么多按了一个t```

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-24 20:37
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

原型:extern void *malloc(unsigned int num_bytes);

用法:#include <alloc.h>

功能:分配长度为num_bytes字节的内存块

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。

举例:

// malloc.c

#include <syslib.h>
#include <alloc.h>

main()
{
char *p;

clrscr(); // clear screen

p=(char *)malloc(100);
if(p)
printf("Memory Allocated at: %x",p);
else
printf("Not Enough Memory!\n");

free(p);

getchar();
return 0;
}


You have lots more to work on! Never give up!c language!
2007-08-24 20:39
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
不过malloc的头文件看编译器而定
有的用stdlib.h
有malloc.h
还像如上
用后记得free

You have lots more to work on! Never give up!c language!
2007-08-24 20:41
快速回复:[求助]关于指针的困惑
数据加载中...
 
   



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

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