鱼C论坛

 找回密码
 立即注册
查看: 1430|回复: 10

[已解决]关于自动分配内存的问题

[复制链接]
发表于 2018-12-25 08:38:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在C语言中可以给  数组指针(指针数组??) 或者是 二级指针 在堆里面自动分配内存的吗??
如果可以,要怎么弄呢?
求解答。
最佳答案
2018-12-27 13:39:53
写反了就不是你想的那个意思了
malloc语句是:申请一段新的空间,然后让指针指向它,这个过程是会改变指针的指向的
int *p;                               //这里有一个指针p,谁也不知道它指向哪儿
int **pp = &p;        //这里有一个指针pp,它指向p

*pp = (int *)malloc(sizeof(int))        //申请一段新的空间,它是一个整数,让pp指向的指针(现在也就是p)指向它
pp = (int **)malloc(sizeof(int *))        //申请一段新的空间,它是一个谁也不知道指向哪儿的指针,让pp指向它。
//现在p是指向一个存储整数的空间;
//但pp并没有指向p,而是指向一个谁也不知道指向哪儿的指针(不可用)
你这样写相当于
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-25 10:44:52 | 显示全部楼层
数组指针 指针数组 2个不同的概念

malloc就行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-25 11:23:49 | 显示全部楼层
ba21 发表于 2018-12-25 10:44
数组指针 指针数组 2个不同的概念

malloc就行了。

二级指针可以分配的吗?如果可以的话,可以给个代码吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-25 11:38:08 | 显示全部楼层
1809228982 发表于 2018-12-25 11:23
二级指针可以分配的吗?如果可以的话,可以给个代码吗

还不是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-25 13:42:49 | 显示全部楼层
任何类型变量都可以用malloc分配内存,关键是看你怎么用这块内存,你把这块内存用来存int的值 ,它表示的就是int,用来存char的值 ,它表示的就是char,用来存int**的值 ,它表示的就是int**,关键看你怎么用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-25 15:29:06 | 显示全部楼层
二级指针其实应该叫“指向指针的指针”。。比如int** ,你可以把它看做(int*)* ,其中int*是它所指向的变量类型。接下来你就应该知道该怎么做了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-26 08:43:24 | 显示全部楼层
Croper 发表于 2018-12-25 15:29
二级指针其实应该叫“指向指针的指针”。。比如int** ,你可以把它看做(int*)* ,其中int*是它所指向的变量 ...
int *p;
int **pp = &p;
*pp = ((int *)*) malloc(sizeof (int*));

这样的??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-26 15:18:22 | 显示全部楼层
int **p;
p=(int**) malloc(sizeof(int*));
*p=(int*)malloc(sizeof(int));
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-27 09:09:58 | 显示全部楼层


大概懂了,就是说二级指针指向的指针也要有指向的空间才行的,是这样吧?
int *p;
int **pp = &p;

*pp = (int *)malloc(sizeof(int))//这个其实就是 p = (int *)malloc(sizeof(int))吧??
pp = (int **)malloc(sizeof(int *))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-27 13:39:53 | 显示全部楼层    本楼为最佳答案   
写反了就不是你想的那个意思了
malloc语句是:申请一段新的空间,然后让指针指向它,这个过程是会改变指针的指向的
int *p;                               //这里有一个指针p,谁也不知道它指向哪儿
int **pp = &p;        //这里有一个指针pp,它指向p

*pp = (int *)malloc(sizeof(int))        //申请一段新的空间,它是一个整数,让pp指向的指针(现在也就是p)指向它
pp = (int **)malloc(sizeof(int *))        //申请一段新的空间,它是一个谁也不知道指向哪儿的指针,让pp指向它。
//现在p是指向一个存储整数的空间;
//但pp并没有指向p,而是指向一个谁也不知道指向哪儿的指针(不可用)
你这样写相当于
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-28 09:00:17 | 显示全部楼层
Croper 发表于 2018-12-27 13:39
写反了就不是你想的那个意思了
malloc语句是:申请一段新的空间,然后让指针指向它,这个过程是会改变指针 ...

知道了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 02:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表