注册 登录
编程论坛 C++教室

求问大神们这样为什么是输出地址

Onesaber 发布于 2014-10-07 09:48, 395 次点击
程序代码:
#include<iostream>
using namespace std;
class Joker
{
    int arr1[4][4];
    int arr2[4][4];
   

public:
    void set();
    void Sreach();
};
void main()
{
    Joker A;
    A.set();
    A.Sreach();
}
void Joker::set()
    {
        int arr1[4][4]={{1,4,8,3},{2,5,6,7},{5,7,1,4},{3,6,2,8}};
        int arr2[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
    }
void Joker::Sreach()
    {
        int i1,j1,i2,j2;
        for(int i=0;i<4;i++)
         for(int j=0;j<4;j++)
             std::cout<<arr2[i][j];
5 回复
#2
wp2319572014-10-07 10:34
int arr1[4][4]={{1,4,8,3},{2,5,6,7},{5,7,1,4},{3,6,2,8}};
        int arr2[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};



  int arr1[4][4];
    int arr2[4][4];
   已经是2种东西了 此非彼
#3
Onesaber2014-10-07 10:48
回复 2 楼 wp231957
请问应该怎么修改呢?
#4
wp2319572014-10-07 10:50
类似这样呢

void Joker::set()
{
     arr2[0][0]=12;
     arr2[0][1]=123;
     arr2[0][2]=1234;
     arr2[0][3]=12345;
     arr2[1][0]=123456;
     arr2[1][1]=1234567;
     //.......
     //......
     //,{2,5,6,7},{5,7,1,4},{3,6,2,8}};
     //arr2[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
}
#5
stop12042014-10-07 12:50
把你的 void main  改成int  main()


是你的编译器设置有问题吧. 你用什么编译器的
我之前发给你的   把 set() 里面的int arr1  改掉  arr1 .

你没看到你定义了两个int arr1 吗?
#6
sangwuhen2014-10-07 19:19
那个在函数set()中两个赋值作用域仅为set()函数内
并没有给类中的两个属性变量赋值,在set()作用域内被覆盖了。
因此从始至终都没有给类中的两个属性变量赋值,输出的结果并不是地址,而是你声明对象时,两个属性变量的默认赋值。
1