| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 395 人关注过本帖
标题:这个动态存储分配不懂
只看楼主 加入收藏
邵蜜柚
Rank: 2
来 自:权大大
等 级:论坛游民
帖 子:79
专家分:86
注 册:2015-2-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
这个动态存储分配不懂
程序代码:
#include<stdio.h>
#include<stdlib.h>
fut(int **s,int p[2][3])
{ **s=p[1][1];}
main()
{ int a[2][3]={1,3,5,7,9,11},*p;
  p=(int *)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);
}



为什么运行结果是9呢?求详解。。
搜索更多相关主题的帖子: 动态 
2015-03-03 21:33
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:20 
因为你定义的函数使指针指向数组的a[1][1],你定义的二维数组a[2][3]={{1,3,5},{7,9,11}}a[1][1]正好是9

一片落叶掉进了回忆的流年。
2015-03-03 21:41
邵蜜柚
Rank: 2
来 自:权大大
等 级:论坛游民
帖 子:79
专家分:86
注 册:2015-2-8
收藏
得分:0 
回复 2楼 诸葛欧阳
额突然觉得我问的问题太那啥了。。
原来是没搞懂二维数组赋值,惭愧。。

请给你男神一个爱你的理由。
2015-03-03 22:22
邵蜜柚
Rank: 2
来 自:权大大
等 级:论坛游民
帖 子:79
专家分:86
注 册:2015-2-8
收藏
得分:0 

请给你男神一个爱你的理由。
2015-03-03 22:22
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:0 
来分析分析你的程序。
从主函数开始:
1,定义了一个2行3列的二维数组并赋初值,定义了一个int型指针。

2,动态分配内存,让p的值是int所占字节大小的内存的地址(这样p就可以用来指向一个int型的数)。

3,调用fut函数,实参为:p的地址,数组的地址。
   此时,fut函数里面就有了2样东西,一个是p的地址,另一个是二维数组a,
   *s(相当于*p)就是p本身,**s(相当于**p)就是p指向的变量,把他赋值为p[1][1](也就是a[1][1],为9)

4,回到主函数,输出*p,就是9了

这个程序包含了:二级指针,跨函数使用内存,动态内存分配,二维数组的知识。
另外:你的程序写的不标准。

你醒了?快起来敲代码!!
2015-03-07 18:30
快速回复:这个动态存储分配不懂
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011637 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved