返回信息流这段代码假如我从控制台输入3 5 9 11 33 6 -9 -76 100 123
则只会输入3,求大神分析原因。谢谢
#include <iostream>
using namespace std;
template <typename T>
int getArrayLenth(T& tArray){
return (sizeof(tArray)/sizeof(tArray[0]));
}
template <typename T1>
void sort(T1 a[10]){
for(int index=0;index<getArrayLenth(a)-1;index++){
if(a[index]>a[index+1]){
int temp=a[index];
a[index]=a[index+1];
a[index+1]=temp;
}
}
for(int index=0;index<getArrayLenth(a);index++){
cout<<a[index]<<"\t";
}
cout<<endl;
}
int main(){
int a[10];
for(int index=0;index<getArrayLenth(a);index++){
cin>>a[index];
}
sort(a);
int w;
cin>>w;
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #81603同步于 2014/8/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]cin问题,求大神带走
tlxlggg
2014/8/18镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 wangxiaobupt 的大作中提到: 】
: sort函数的传参问题吧
: 你可以把sort函数里面的 getArrayLenth(a)打印出来看看
:
: ...................
我通过debug看到a中的元素就只有1个3,一直都分析不出原因,有时候cout也只会输出一个元素。会不会是vs的原因?或者说使用模板会有影响?
你通过debug 看到 getArrayLenth(a)多大了么 是10么
换句话说 第一个for循环到底执行了几次 第二个for循环又执行了几次呢
【 在 tlxlggg 的大作中提到: 】
: 我通过debug看到a中的元素就只有1个3,一直都分析不出原因,有时候cout也只会输出一个元素。会不会是vs的原因?或者说使用模板会有影响?
【 在 wangxiaobupt 的大作中提到: 】
: sort函数的传参问题吧
: 你可以把sort函数里面的 getArrayLenth(a)打印出来看看
:
: ...................
问题好像解决了。但是为什么写sort(T1 a[])不行,而用sort(T1 &a)就行呢。c++新学,还请大神能不吝赐教。
正确的那种是引用类型的 传入的可以看作 你定义的那个数组
你原来那种是非引用类型 也就是将你数组的地址拷贝给另一个指针了 称为数组退化为指针
此时你通过这个新指针是没法通过 sizeof(a/a[0])得到数组大小的
【 在 tlxlggg 的大作中提到: 】
: 问题好像解决了。但是为什么写sort(T1 a[])不行,而用sort(T1 &a)就行呢。c++新学,还请大神能不吝赐教。
【 在 wangxiaobupt 的大作中提到: 】
: 正确的那种是引用类型的 传入的可以看作 你定义的那个数组
: 你原来那种是非引用类型 也就是将你数组的地址拷贝给另一个指针了 称为数组退化为指针
: 此时你通过这个新指针是没法通过 sizeof(a/a[0])得到数组大小的
: ...................
喔喔,了解了!多谢大神的指点![em12]