| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖
标题:一个关于数组的指针问题,请大家帮忙看看
只看楼主 加入收藏
Invariably
Rank: 2
等 级:论坛游民
帖 子:54
专家分:46
注 册:2010-9-18
结帖率:90%
收藏
已结贴  问题点数:20 回复次数:4 
一个关于数组的指针问题,请大家帮忙看看

这个程序是没有问题的,但是把&A[0][0]如果改成&A[N][N](就是程序中用红色标记出来的地方)怎么就不对了呢,这两个不是表示同一个地址吗?请打大家帮忙看看,谢谢了!
#include<iostream>
using namespace std;
const N=3;
void print_matrix(int*q=NULL,int n=1)//把矩阵A打印到屏幕上
{
    cout<<"A的"<<n<<"次方 ="<<endl;
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<N;j++)
        {
            cout.width (5);
            cout.fill();
            cout<<*(q+i*N+j)<<',';
        }
        cout<<endl;
    }
}
int main()

{
A={{1,2,3},{2,3,4},{3,4,1}};
    print_matrix(&A[0][0]);
        return 0;
}

[ 本帖最后由 Invariably 于 2011-5-8 15:10 编辑 ]
搜索更多相关主题的帖子: 矩阵 include 
2011-05-08 15:05
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:20 
&A[0][0]实质就是A所指地址,也就是数组首地址。
&A[N][N]即是&A[3][3];也就是 A + 3 * 3 + 3 这个地址,已经是数组之外的一个位置了,非法内存访问,你最大运行访问到的地址是&A[2][2] (位置为A + 3 * 2 + 2),

就算你传参的时候传&A[2][2],它和&A[0][0]也不是一个位置了,一个数数组的首地址一个是末尾地址,怎么会相同?

还有一个就是print_matrix(int*q=NULL,int n=1)这个函数有个默认参数,是不是你想传q=NULL?如果那样你的程序一定会非法内存访问的了 也就是说崩溃。

[ 本帖最后由 yuccn 于 2011-5-8 15:49 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-05-08 15:47
Invariably
Rank: 2
等 级:论坛游民
帖 子:54
专家分:46
注 册:2010-9-18
收藏
得分:0 
谢谢,明白了。。。
哪个print_matrix(int*q=NULL,int n=1)只是在定义一个只指针的时候给它赋了一个初值,并没有要传q=NULL.
在问一下数组名A为什么不能直接传上去呢,而要写成&A[0][0]呢?数组名里面放的不就是数组的首地址吗,这两个有什么区别吗?

[ 本帖最后由 Invariably 于 2011-5-8 16:55 编辑 ]
2011-05-08 16:52
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
&A[0][0] 可以写成传 A[0]就行了,因为A是一个指针的指针了,A[0]可以理解为一个指针了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-05-08 21:08
Invariably
Rank: 2
等 级:论坛游民
帖 子:54
专家分:46
注 册:2010-9-18
收藏
得分:0 
知道了,谢谢
2011-05-08 21:25
快速回复:一个关于数组的指针问题,请大家帮忙看看
数据加载中...
 
   



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

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