中易网

C语言 关于为指针的指针分配内存的问题

答案:5  悬赏:30  
解决时间 2021-01-21 18:22
C语言 关于为指针的指针分配内存的问题
最佳答案
首先:int** 是一个二级指针,它是指针的指针,如果你要申请一个二维数组,有下面两个方法:
int** val = (int**)malloc(sizeof(int*) * 10);
int i;
for(i = 0; i < 10)
val[i] = (int*)malloc(sizeof(int) * 10);
然后你可以这样引用:*(*(val+m)+n) = value;

第二种:int* val = (int*)malloc(sizeof(int) * 10 * 10);
然后这样引用:*(m*10 + n) = value;
这其实就是个一维数组,不过你把它看成二维的处理。。

希望对你有帮助哦
全部回答
使用sizeof,就和机器位数无关~
二级指针动态分配方式如下:
int **a;
a=(int**)malloc(m*sizeof(int*));
for(i=0;ia[i]=(int*)malloc(n*sizeof(int));
array 是 int * * 型的吗?我在VC6.0测试,分配内存是正确的,但要明白,分配的内存都被认为是int*型的,也就是101个int*型的空间。
*(array+j)得到这101个空间中的某个,是int*型,*(*(array+j)+n)是这101个指针中的某一个指向的内存空间,而这个内存空间没有分配,所以程序运行时会出错。至于在16位机器上通过,只是侥幸而已,因为16位机器没有内存保护,所有的空间都能访问,如果访问了操作系统的空间,可能不会立即崩溃,但系统有可能出问题的。而32位机器有保护模式,访问非法空间系统会报错。
//给你一段代码看看,呵呵。
int i=0,j=0,x=10,y=10;
int **array=NULL;
//注意,是这样申请空间的,一次性完成
array=(int**)malloc(sizeof(int)*x*y + y*sizeof(int*));
array[0]=(int*)((char*)array + y*sizeof(int*));
for(i=1;ifor( i = 0 ; i < y; i++ )
{
for( j = 0 ; j < x; j++ )
{
array[i][j] = j;
}
}
for( i = 0 ; i < y; i++ )
{
for( j = 0 ; j < x; j++ )
{
printf(" %d " , array[i][j]);
}
}
free(array);//注意,是这样释放空间的,一次性完成

1、void* malloc(size_t  size)。这个函数请求分配大小为size字节的内存,并返回指向该块内存起始位置的指针。
2、例程:#include  
#include 
void main() 

 int i,j; 
 int row,col; 
 int** matrix; 
 printf("input the row and col: ");
 scanf("%d%d",&row,&col);  //输入矩阵的行和列
 //动态分配内存 
 // 为动态数组分配了二维的空间 
 matrix=(int **)malloc(sizeof(int *)*row); 
 for(i=0;i { 
  matrix[i]=(int*)malloc(sizeof(int)*col); 
 } 
 //输入
 printf("please input the array elements: ") ;
 for(i=0;i { 
  for(j=0;j  { 
   scanf("%d",&matrix[i][j]); 
  } 
 }
 //输出 
 for(i=0;i {
  printf(" ");
  for(j=0;j  { 
   printf("%d  ",matrix[i][j]); 
  } 
 } 
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
炉石牧师为什么会恶心到这样程度,我实在不理
门窗检验批的验收部位应该分楼层填吗
水彩绘画的时候有的颜色分辨不出,不知道是哪
如何保护电脑硬盘?
丹东哪家做双眼皮做得好啊
带牙套可以不拔牙把牙齿磨细吗,前牙排列拥挤
手机软件插件微信捕鱼器充值永久免费软件
北京离五岳的距离由近到远排序?
宝宝营养不良那可怎么办?
车载导航播放手机中的视频技巧
近视和远视的区别,和两者的概念是什么?
小白求助怎样装窗帘杆
c#程序的源代码是什么
一个长方体,它的宽和高相等,若把长去掉2.5c
激光除胎记费用是多少钱
推荐资讯
梦幻西游有点卡订单号,可以查询卡号和密码吗
林子渔家怎么样
请问如果使用运算放大器来对交流信号进行全波
2011辽宁大学录取理科分数线
西湖社区居委会地址在什么地方,我要处理点事
谁有coredraw x7中文破解版?别的版本也可以
现在婴儿奶粉为什么那么贵
红发香克斯和小丑巴基是什么时候加入的罗杰海
鸿墒贸易的PVB树脂怎么样?
在农业银行贷了30万的款,还没还,还可以再中
iphone手机qq可以装到defy吗
框架图中标wl2(2)240*750 $8@100(2) 2$20;4$2
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?