1809228982 发表于 2018-12-25 08:38:21

关于自动分配内存的问题

在C语言中可以给数组指针(指针数组??) 或者是 二级指针 在堆里面自动分配内存的吗??
如果可以,要怎么弄呢?
求解答。

ba21 发表于 2018-12-25 10:44:52

数组指针 指针数组 2个不同的概念

malloc就行了。

1809228982 发表于 2018-12-25 11:23:49

ba21 发表于 2018-12-25 10:44
数组指针 指针数组 2个不同的概念

malloc就行了。

二级指针可以分配的吗?如果可以的话,可以给个代码吗
{:5_92:}

ba21 发表于 2018-12-25 11:38:08

1809228982 发表于 2018-12-25 11:23
二级指针可以分配的吗?如果可以的话,可以给个代码吗

还不是一样的

rencaixiaomeng 发表于 2018-12-25 13:42:49

任何类型变量都可以用malloc分配内存,关键是看你怎么用这块内存,你把这块内存用来存int的值 ,它表示的就是int,用来存char的值 ,它表示的就是char,用来存int**的值 ,它表示的就是int**,关键看你怎么用

Croper 发表于 2018-12-25 15:29:06

二级指针其实应该叫“指向指针的指针”。。比如int** ,你可以把它看做(int*)* ,其中int*是它所指向的变量类型。接下来你就应该知道该怎么做了

1809228982 发表于 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*));

这样的??

Croper 发表于 2018-12-26 15:18:22

int **p;
p=(int**) malloc(sizeof(int*));
*p=(int*)malloc(sizeof(int));

1809228982 发表于 2018-12-27 09:09:58

Croper 发表于 2018-12-26 15:18


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

*pp = (int *)malloc(sizeof(int))//这个其实就是 p = (int *)malloc(sizeof(int))吧??
pp = (int **)malloc(sizeof(int *))

Croper 发表于 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,而是指向一个谁也不知道指向哪儿的指针(不可用)
你这样写相当于

1809228982 发表于 2018-12-28 09:00:17

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

知道了,谢谢
页: [1]
查看完整版本: 关于自动分配内存的问题