train

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  3 随笔 :: 0 文章 :: 6 评论 :: 0 Trackbacks
#include "stdafx.h"
#include "iostream"
using namespace std;

int &f3(int n,int s[])
{
int &m=s[n];
return m;
}

void main()
{
   int s[]={5,4,3,2,1,0}
   f3(3,s)=10;
   cout<<f3(3,s)<<endl;
}

這段代碼中不知道是怎嚜運行的: 1,函數f3()中m的引用是誰? 2,主函數中f3(3,s)=10;這條語句是怎嚜理解的?它又是怎嚜執行的?

謝謝各位高手!  本人新手,不董的東東很多,請多多指教! 
posted on 2009-04-07 17:23 Train 阅读(223) 评论(4)  编辑 收藏 引用

评论

# re: 請幫助分析以下這個程式是怎嚜執行的! 2009-04-07 17:46 lccc
void main()
{
int s[]={5,4,3,2,1,0};
f3(3,s)=10;
for (int i=0; i<sizeof(s)/sizeof(s[0]); i++)
cout<<"s["<<i<<"]="<<s[i]<<endl;
cout<<"f3(3,s)="<<f3(3,s)<<endl;
}

结果
s[0]=5
s[1]=4
s[2]=3
s[3]=10
s[4]=1
s[5]=0
f3(3,s)=10  回复  更多评论
  

# re: 請幫助分析以下這個程式是怎嚜執行的! 2009-04-07 22:35 Sunshine Alike
呵呵,我又来了 ^_^
1. m引用s数组中的第四个元素
2. 对第四个元素进行赋值

函数形参里的数组会被自动转化为指针,即第一个元素的地址
f3函数返回一个对int型的引用,在函数体内m与s[3]相绑定,所有对m的操作都被转化到s[3]上。
不过在函数体内返回对局部变量的引用是非常不好的作法,有可能引起某些不确定的异常  回复  更多评论
  

# re: 請幫助分析以下這個程式是怎嚜執行的! 2009-04-08 08:34 Train
@Sunshine Alike
謝謝你的幫助,祝福你工作有個好心情!  回复  更多评论
  

# re: 請幫助分析以下這個程式是怎嚜執行的! 2009-04-08 13:35 Train
@lccc
lccc你幫我補充的句子很好,能看得很明白 喔!
謝謝指教!  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理