| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 698 人关注过本帖
标题:指针,错在哪
只看楼主 加入收藏
z9895512
Rank: 2
等 级:论坛游民
帖 子:24
专家分:43
注 册:2010-6-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
指针,错在哪
#include<stdio.h>
int s[3][3];
void one(int *p);
int main()
{
int *p;
p=*s;
for(;p<*s+9;p++)
scanf("%d",p);
one(*s);

}

void one(int *p)
{
    int i,j,t;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
    {if(i<j)t=(p+i)[j],(p+i)[j]=(p+j)[i],(p+j)[i]=t;}/*这是个转置函数,这是转置部分,但是运行结果没有转置~(要用指针,请告诉我错在哪,不要用不同的方法)*/

for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",s[i][j]);
}


指点一下~
搜索更多相关主题的帖子: 指针 
2010-06-15 15:33
z9895512
Rank: 2
等 级:论坛游民
帖 子:24
专家分:43
注 册:2010-6-3
收藏
得分:0 
额···没人懂吗···
2010-06-15 16:50
lzdrifter
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-15 17:51
aitajiujiage
Rank: 2
等 级:论坛游民
帖 子:21
专家分:34
注 册:2010-5-10
收藏
得分:0 
p=*s我就觉得是不对的,因为S是数组名它所代表的就是数组的首地址,因此应该为p=s;
给数组负初值也发生错误,应改为:for(i=0;i<3;i++)
                                 for(j=0;j<3;j++)
                                   scanf("%d",&s[i][j]);
实参也错误应该为:s.
2010-06-15 18:03
q3286446
Rank: 1
来 自:中国
等 级:新手上路
帖 子:31
专家分:6
注 册:2010-5-24
收藏
得分:0 
*s不用定义吗??
2010-06-15 18:13
xiaomanaruto
Rank: 6Rank: 6
等 级:侠之大者
帖 子:79
专家分:443
注 册:2010-4-1
收藏
得分:20 
#include<stdio.h>
int s[3][3];
void one(int *p);
int main()
{
int *p;
p=*s;
for(;p<*s+9;p++)
scanf("%d",p);
one(*s);

}

void one(int *p)//这里只是定义了一个指针变量,接受的是s[0][0]的地址
{
    int i,j,t;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        if(i>j){t=(p+i)[j];(p+i)[j]=(p+j)[i];(p+j)[i]=t;}//这里做这样的交换是没有意义的,因为并不代表是s[i][j]与s[j][i]元素的交换,这是由指针p的类型决定,如果是二维指针的话会成功的,楼主试试吧
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%d ",s[i][j]);
printf("\n");}
}
2010-06-15 18:33
z9895512
Rank: 2
等 级:论坛游民
帖 子:24
专家分:43
注 册:2010-6-3
收藏
得分:0 
回复 6楼 xiaomanaruto
原来只能用2维指针 才能这样写啊,好的,谢谢!
2010-06-15 18:42
lzdrifter
该用户已被删除
收藏
得分:0 
回复 6楼 xiaomanaruto
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-15 18:43
z9895512
Rank: 2
等 级:论坛游民
帖 子:24
专家分:43
注 册:2010-6-3
收藏
得分:0 
回复 8楼 lzdrifter
int *p
虽然p是指向a[3][4]数组,但却不能用*((p+i)+j)去代表第i行第j列元素值
若定义p为2维数组指针
int (*p)[4]
就可以用*((p+i)+j)去代表第i行第j列的元素值
2010-06-15 19:14
???Cc丶?
Rank: 2
等 级:等待验证会员
帖 子:13
专家分:23
注 册:2010-6-16
收藏
得分:0 
看不懂的路过~
2010-06-16 19:05
快速回复:指针,错在哪
数据加载中...
 
   



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

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