C++ Note 1
本文是我的C++笔记的第一篇 My First C++ Note;
一些例子
1
1#include <iostream>
2
3using namespace std;
4
5int main()
6{
7 string x{"222333"};
8 char *y = "222333";
9 string xx{x, 3};
10 string yy{y, 3};
11 cout << xx << endl;
12 cout << yy << endl;
13}
2
1void pp(int x)
2{
3 cout<<"int";
4}
5
6void pp(int* x)
7{
8 cout<<"int*";
9}
10
11
12int main()
13{
14 pp(nullptr);// 输出int*
15 pp(NULL); // 有歧义,编译失败
16}
一些疑问
1int s[2][2]{
2 {1, 2}, {3, 4}};
3for (int *i : s)
4{
5 for (int j{}; j < 2; ++j)
6 {
7 cout << i[j];
8 }
9}
这段代码为何生效?s的类型不应该是int()[2]吗? 解释:s的类型为int[2][2],但是非常容易decay,因此大多数时候会提示为int()[2],例如你用char x{s};试图从报错中得到s的类型的时候就会提示为int()[2].此处从s中取出的应该是int[2],然后被decay为int 追问:那有没有办法让i的类型为int[2] 解答:写成auto& i 或者 int(&x)[2]即可 完整代码为
1int s[2][2]{
2 {1, 2}, {3, 4}};
3for (int(&i)[2] : s)
4{
5 for (int j : i)
6 {
7 cout << j;
8 }
9}
10for (auto &i : s)
11{
12 for (auto j : i)
13 {
14 cout << j;
15 }
16}
17for (int j : (*s))
18{
19 cout << j;
20}