请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于定义指针的指针变量,用malloc开辟空间,当作二维数组使用的多种方法和不同形式

图片描述
因为leetcode中用C语言解决的算法题中,很多都会返回一个二维数组来保存结果,以上就我看的答案里面的,如何用指针的指针保存答案的C语言语法实现方法,开始对a[aSize++] = t; 这句比较诧异,慢慢理解了a[i]代表的也是指向一维数组的指针,t也是一个一维数组的起始地址,ennnnnn原来指针代表的数组还能这么直接赋值?(以上均是我自己的理解,哪里有问题希望老师能指出),并且理解不是很深入,
比如这个二重指针,他先开辟了(行),确定了有多少个一维数组,代入数组的理解,初始怎么能不设置列数呢?有点乱了,就是二重指针变量里面的地址不是连续的吗?

` int **result;
int resultSize;
result = (int *) malloc(sizeof (int) * 10000);
*result = (int *) malloc( sizeof (int) * k);
int *temp = (int *)malloc(sizeof (int) * k);
for (int i = 0; i < k; i++) {
temp[i] = path[i];
}
for (int i = 0; i < k; ++i) {
result[resultSize++][i] = temp[i];
}``

以上这段代码是我一开始自己的想法写的,是错的。不能一开始就把二重指针像二维数组一样定义好吗,如果可以正确的应该如何定义呢

正在回答

2回答

二维指针是指针的指针,所以不一定连续。你可以理解成你手上有一份名单(二维指针),里面是一小队特工的代号,每一个代号(一维指针)指向的可能是不同国家和地区的特工。
1 回复 有任何疑惑可以回复我~
  • 提问者 懒洋洋爱学习 #1
    略懂。所以二重指针可以一开始就使用两个malloc确定其行号和列号吗,然后后面就直接把它当成二维数组用,可以吗。有其他方式实现吗
    回复 有任何疑惑可以回复我~ 2023-03-30 18:30:43
  • bennyhuo 回复 提问者 懒洋洋爱学习 #2
    注意,二维数组是n*m的空间,二级指针里面每个指针指向的内存大小不一定相同
    回复 有任何疑惑可以回复我~ 2023-03-30 23:09:38
bennyhuo 2023-03-30 18:24:23
同学,代码格式有点儿问题
1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号