| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 781 人关注过本帖
标题:[求助]真的有那么难吗?
只看楼主 加入收藏
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
 问题点数:0 回复次数:15 
[求助]真的有那么难吗?
1。蓝色部分能不能改为:int **p=(int **)a;为什么?
2。蓝色部分能不能改为:int **p=a;为什么?我已经在这论坛发了好多关于这个题的文章了,但得到的答案很迷糊,请
高人指点!
#include<stdio.h>
int BubbleUp(int **array,int length);
int main()
{
int a[2][3]={3,4,7,8,2,1};
int *ptr=a[0];
int i;
int **p=&ptr;
BubbleUp(p,6);
for(i=0;i<6;i++)
printf("%d\t",ptr[i]);
getchar();
return 0;

}
int BubbleUp(int **array,int length)
{
int i,j, temp;
for(i=0;i<length;i++)
for(j=0;j<length-i-1;j++)
if(*(*array+j)>*(*array+j+1))
{
temp=*(*array+j);
*(*array+j)=*(*array+j+1);
*(*array+j+1)=temp;
}

return 0;
}
搜索更多相关主题的帖子: include return 文章 
2007-11-15 15:07
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

[此贴子已经被作者于2007-11-15 15:56:32编辑过]


—>〉Sun〈<—
2007-11-15 15:39
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 

谢谢!
那为什么可以,先int int *ptr=(int *)a;再int **p=&ptr;


努力才会成功!
2007-11-15 15:49
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

[此贴子已经被作者于2007-11-15 16:04:36编辑过]


—>〉Sun〈<—
2007-11-15 15:54
devfhpgah
Rank: 1
来 自:江西
等 级:新手上路
帖 子:204
专家分:0
注 册:2007-8-16
收藏
得分:0 
a 只是一个值,这个值是数组首元素的地址.就不能int **p = (int **)a;?那 int *ptr=(int *)a 又可以?

努力才会成功!
2007-11-15 16:01
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
我理一下思路

你的数组是:
int a[2][3]={3,4,7,8,2,1};


int **p = (int **)a; // a 的值是 &a[0][0],

那么 *p == 3; 3 是一个有效的 int 指针的值吗!

//-----------------------------------------------------

int *ptr=(int *)a;

这完全可以。

//-----------------------------------------------------

其实根本不存在二维数组或更多维的数组。

对于多维数组,完全是一种便利的方法。

int a[2][3]; 和 int a[6]; 完全是一样的,都是 6 * sizeof(int) 。

多维只是语法上的,对于实现都是一维的。


//------------------------------------------------------------------------------

自己都要晕了。

对于楼主的程序完全是不良风格!


[此贴子已经被作者于2007-11-15 16:14:44编辑过]


—>〉Sun〈<—
2007-11-15 16:10
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

// 我修改的。

#include<stdio.h>
int BubbleUp(int *ar, int length);

int main(void)
{
int a[2][3] = {3,4,7,8,2,1};
int i;
int *p = (int *)a;

BubbleUp(p, 6);
for(i = 0; i < 6; i++)
printf("%d\t", p[i]);

getchar();
return 0;
}

int BubbleUp(int *ar, int length) // 对于这个程序完全没必要使用 指针的指针
{
int i, j, temp;
for(i = 0; i < length; i++)
for(j = 0; j < length - i - 1; j++)
if(ar[j] > ar[j+1])
{
temp = ar[j];
ar[j] = ar[j + 1];
ar[j + 1] = temp;
}

return 0;
}


—>〉Sun〈<—
2007-11-15 16:25
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
正确理解指针,二维指针是指向指针的指针
2007-11-15 16:28
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
二维数组不是指向指针的指针,不要理解错了,二维数组是一个指向数组的指针

雁无留踪之意,水无取影之心
2007-11-15 16:43
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

#include<stdio.h>

int main(void)
{
int a[2][3] = {88,4,67,8,12,1};
printf("%p\n%p\n%p\n", a, a[0], &a[0][0]);

getchar();
return 0;
}

// a, a[0], &a[0][0], 这3者的值完全是相同的


—>〉Sun〈<—
2007-11-15 16:43
快速回复:[求助]真的有那么难吗?
数据加载中...
 
   



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

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