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);
}