您的位置:首页 > 其它

6.2.4

2016-12-25 21:46 211 查看
6.21

#include <iostream>
using std::cout;

int larger_one(const int i, const int *p)
{
return (i > *p) ? i : *p;
}

int main()
{
int i = 6;
cout << larger_one(7, &i);

return 0;
}


6.22

void swap(int*& lft, int*& rht)
{
auto tmp = lft;
lft = rht;
rht = tmp;
}


6.23

@pezy Mooophy

#include <iostream>
using std::cout; using std::endl; using std::begin; using std::end;

void print(const int *pi)
{
if(pi)
cout << *pi << endl;
}

void print(const char *p)
{
if (p)
while (*p) cout << *p++;
cout << endl;
}

void print(const int *beg, const int *end)
{
while (beg != end)
cout << *beg++ << endl;
}

void print(const int ia[], size_t size)
{
for (size_t i = 0; i != size; ++i) {
cout << ia[i] << endl;
}
}

void print(int (&arr)[2])
{
for (auto i : arr)
cout << i << endl;
}

int main()
{
int i = 0, j[2] = { 0, 1 };
char ch[5] = "pezy";

print(ch);
print(begin(j), end(j));
print(&i);
print(j, end(j)-begin(j));
print(j);

return 0;
}


6.24

const int ia[10],传递的是一个指针,并不是数组(或者说数组的本质就是指针),我们应该使用reference来告诉它,我们传递的是 ”数组”

改正:

#include<iostream>
void print(const int (&ia)[10])
{
for (size_t i = 0; i != 10; ++i)
std::cout << ia[i] << std::endl;
}
int main() {
int ia[10]={0,1,2,3,4,5,6,7,8,9};
print(ia);
}


但是我发现如果我用的下面这样的也行:

#include<iostream>
void print(const int ia[10])       //const int (&ia)[10]
/*但是可能会出现问题,因为这个本质上是声明传入一个指针(const int*),也就是说你传入一个不指向数组的指针,也会被编译器检查通过,而你原本想传入的是一个数组    so array types cannot be function parameter or return types.*/
{
for (size_t i = 0; i != 10; ++i)
std::cout << ia[i] << std::endl;
}
int main() {
int ia[10]={0,1,2,3,4,5,6,7,8,9};
print(ia);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: