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

引用问题,求大神解答

wengbin 发布于 2015-09-24 11:03, 634 次点击
//想通过调用resetString(string& )和resetStringArray(string& arr[][2])函数改变主函数中已经定义好的字符串和字符串数组,可结果是只有字符串能顺利改变。数组部分编译失败。求大神教导
#include<iostream>
#include<string>
using namespace std;

void resetString(string& );
void resetStringArray(string& arr[][2]);

int main()
{
/*----------------------------------*/
    string ss="WENG";
    cout<<"before:\n"<<ss<<endl;
    resetString(ss);
    cout<<"after:\n"<<ss<<endl;//可顺利运行;
/*--------------------------------*/

    string arr[2][2]={{"a","b"},{"c","d"}};
    cout<<"before:\n"<<endl;
    for(int i=0;i<2;i++)
        {
            for(int j=0;j<2;j++){cout<<"\t"<<arr[i][j];}
            cout<<endl;
        }
    resetStringArray(arr[2][2]);

    cout<<"after:\n"<<endl;
    for(int i=0;i<2;i++)
        {
            for(int j=0;j<2;j++){cout<<"\t"<<arr[i][j];}
            cout<<endl;
        }
    system("pause");
    return 0;
}

void resetString(string& a){a="HUANG";}
void resetStringArray(string& arr[][2]){arr[][2]={{"d","c"},{"b","a"}};}

[ 本帖最后由 wengbin 于 2015-9-24 11:16 编辑 ]
5 回复
#2
wengbin2015-09-24 11:15
没有void resetStringArray(string& arr[][2])调用,函数可以运行,求指导是哪里出了问题

[ 本帖最后由 wengbin 于 2015-9-24 11:18 编辑 ]
#3
rjsp2015-09-24 13:58
我有强迫症,看到不好的东西就想将它改到正道上

程序代码:
#include <iostream>
#include <string>
using namespace std;

void ResetStringArray( std::string (&arr)[2][2] );

template<typename T, size_t M, size_t N>
void PrintArray( const T (&arr)[M][N] )
{
    for( size_t i=0; i!=M; ++i )
    {
        for( size_t j=0; j!=N; ++j )
            cout << '\t' << arr[i][j];
        cout << '\n';
    }
}

int main( void )
{
    string arr[2][2] = { {"a","b"}, {"c","d"} };

    cout << "before:\n";
    PrintArray( arr );

    ResetStringArray( arr );

    cout << "after:\n";
    PrintArray( arr );

    return 0;
}

void ResetStringArray( std::string (&arr)[2][2] )
{
    arr[0][0] = "d";
    arr[0][1] = "c";
    arr[1][0] = "b";
    arr[1][1] = "a";
}

#4
wengbin2015-09-24 15:19
回复 3楼 rjsp
谢谢,打印函数的代码让我受教了
#5
rjsp2015-09-24 19:17
以下是引用wengbin在2015-9-24 15:19:37的发言:
谢谢,打印函数的代码让我受教了

你看那个不相干的东西干什么呀?看其他的
#6
农民工2015-09-30 16:43
嗯,看数组是怎么引用传递的
1