汗
怎么回事>?
#include "stdio.h"
#include "conio.h"
#define W 5
#define H 10
main()
{
int **num=NULL;
int i,j;
num=(int *)malloc(H*W*sizeof(int));
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
num[i][j]=i+j;
}
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
printf("%2d ",num[i][j]);
}
getch();
}
这个程序在TC下没问题
在WIN-TC下就不行
----------------解决方案--------------------------------------------------------
/* HELLO.C -- Hello, world */
#include "stdio.h"
#include "conio.h"
#define W 5
#define H 10
main()
{
int **num=NULL;
int i,j;
num=(int *)malloc(W*sizeof(int));
*num=(int *)malloc(H*sizeof(int));
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
num[i][j]=0;
}
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
printf("%2d ",num[i][j]);
}
getch();
}
这个在哪个里面都出问题
而且问题相同!
输出没问题
但是最后说 : NULL pointer assignment
先去上课 晚上回来再想这个问题
----------------解决方案--------------------------------------------------------
这动态分配用得少,先谢谢大家。
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
int i, j;
int** p = (int**) malloc(10 * sizeof( int* ));
for(i = 0; i < 10; ++i)
{
p[ i ] = (int*) malloc(10 * sizeof( int ));
}
for(i = 0; i < 10; ++i)
{
for(j = 0; j < 10; ++j)
{
p[ i ][ j ] = j;
}
}
for(i = 0; i < 10; ++i)
{
for(j = 0; j < 10; ++j)
{
printf("%d ", p[ i ][ j ]);
}
putchar( '\n' );
}
for(i = 0; i < 10; ++i)
{
free( p[ i ] );
}
free( p );
printf("%d\n%s\n", argc, argv[ 0 ]);
printf("Press ENTER to exit...");
getchar();
return 0;
}
好像是这样的。编译、运行通过。
----------------解决方案--------------------------------------------------------
汗
怎么回事>?
#include "stdio.h"
#include "conio.h"
#define W 5
#define H 10
main()
{
int **num=NULL;
int i,j;
num=(int **)malloc(H*W*sizeof(int));
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
num[i][j]=i+j;
}
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
printf("%2d ",num[i][j]);
}
getch();
}
这个程序在TC下没问题
在WIN-TC下就不行
----------------解决方案--------------------------------------------------------
只有14楼的是对的
----------------解决方案--------------------------------------------------------
num=(int **)malloc(H*W*sizeof(int));
有 运行结果也是一样
(老师讲的真恶不上了)
----------------解决方案--------------------------------------------------------
/* HELLO.C -- Hello, world */
#include "stdio.h"
#include "conio.h"
#define W 5
#define H 10
main()
{
int **num=NULL;
int i,j;
num=(int **)malloc(H*sizeof(int));
for(i = 0; i < H; ++i)
{
*(num+i)=(int *)malloc(W*sizeof(int));
}
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
num[i][j]=i+j;
}
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
printf("%2d ",num[i][j]);
}
getch();
}
学习了!!
----------------解决方案--------------------------------------------------------
只有14楼的是对的
#include "stdio.h"
#include "conio.h"
#define W 5
#define H 10
main()
{
int *num=NULL;
int i,j;
num=(int *)malloc(H*W*sizeof(int));
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
*(num+i*H+j)=i;
}
for(i=0;i<H;i++)
for(j=0;j<W;j++)
{
printf("%2d ",*(num+i*H+j));
}
}
老K.这样不行吗?
我也感觉纳闷.在TC下这样没问题.可是在C-FREE下...他就没反映了,(编译通过.但什么也不做)
想了半天也没想通.难道是malloc没有分配成功?
----------------解决方案--------------------------------------------------------
我用的是C++;
int *piArray;
cout<<"请输入数组的大小:";
cin>>num;
piArray = new int[num];
----------------解决方案--------------------------------------------------------