当前位置: 代码迷 >> C语言 >> 关于malloc函数~知道的近来看一下哦
  详细解决方案

关于malloc函数~知道的近来看一下哦

热度:256   发布时间:2006-05-10 18:54:00.0
11楼的真是C高手啊!
----------------解决方案--------------------------------------------------------
以下是引用工藤♀新一在2006-5-10 10:33:00的发言:

我用malloc定义一个动态数组~
#include"stdio.h"
#include"malloc.h"
main()
{int i,j,n;
int *fangzhen;
printf("Input n:");
scanf("%d",&n);
fangzhen=(int*)malloc(n*n*2);
printf("Input fangzhen:");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&fangzhen[i][j])
}
为什么编译说scanf("%d",&fangzhen[i][j])是无效间接运算~而换成
scanf("%d",*(fangzhen+i)+j)就可以了~
但输出时用printf("%d",*(*(fangzhen+i)+j))就又说运算无效~
到底怎么用动态数组?


请注意看这一句,&fangzhen[i][j],这是值,如果换成"fangzhen[i][j]),就可以了,这样才是地址,看来楼主还应该看一下
指针那一章


----------------解决方案--------------------------------------------------------
能解释一下这句话的具体意思吗?
不懂!p = (int**)malloc(sizeof(int*) * M)) == NULL
----------------解决方案--------------------------------------------------------
以下是引用独角龙在2006-5-10 18:54:00的发言:
11楼的真是C高手啊!

自己就是11楼~哈哈哈哈哈哈
----------------解决方案--------------------------------------------------------
判断malloc是否分配内存失败

失败的原因很多的~比如说内存不够了或者什么的
----------------解决方案--------------------------------------------------------

以下是引用zhangjuan在2006-5-10 19:05:00的发言:

请注意看这一句,&fangzhen[i][j],这是值,如果换成"fangzhen[i][j]),就可以了,这样才是地址,看来楼主还应该看一下
指针那一章

&fangzhen[i][j]这个是值?
比如我定义一个2维数组a[5][5],*p=a;
难道&p[i][j]是值(也就是里面的内容)?


----------------解决方案--------------------------------------------------------
hehe
写错了
----------------解决方案--------------------------------------------------------
弱弱的问一下,10楼中
...
if ((p = (int**)malloc(sizeof(int*) * M)) == NULL) /* 分配第一个下标 */
...
为什么要用指向指针的指针int**,改成int*运行好像也没有错阿~论坛大哥解释一下吧
----------------解决方案--------------------------------------------------------
强制转换成2级指针,因为指向的是二维数组
----------------解决方案--------------------------------------------------------
  相关解决方案