cpp基础语法

指针

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <bits/stdc++.h>
using namespace std;


int * func() {
  int *p = new int(10);
  return p;

}

int main(void) {

  int *p = func();
  cout << "aa" <<endl;
  cout << *p <<endl ;


  delete(p);
  p = NULL;
  cout << *p <<endl;

  cout << "hello world" <<endl;


  return 0;
}
1
2
3
4
$ g++ app.cpp  && ./a.out
aa
10
Segmentation fault

c++ 采用值拷贝,要想返回一块内存地址,就要使用指针的方式,要想用指针,就必须要 new 关键字 在 堆内存上开辟空间

引用

注意: 引用一旦创建就不能被改变

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int * func() {
  int *p = new int(10);
  return p;

}

int main(void) {

  int *p = func();
  cout << "aa" <<endl;
  cout << *p <<endl ;
  int &b = *p;
  // 查看引用的地址
  cout << &b << " -> " << p <<endl;

  delete(p);
  p = NULL;
  cout << "hello world" <<endl;
  return 0;
}
1
2
3
4
5
:!./a.out
aa
10
0x55ad9b176eb0 -> 0x55ad9b176eb0
hello world

引用作为函数返回值

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;


int& func() {

  // 注意,局部变量不能返回引用,要返回堆内存的指针变量
  int *p = new int(10);
  return *p;

}

int & call() {
  return func();
}

int main(void) {

 
  int &ref = call();
  cout << ref <<endl;
  cout << "hello world" <<endl;
  return 0;
};

面向对象

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
#define PI 3.14159

class Circle {
  public:
  int m_r;

  double getTotalLength() {
    return 2*PI * m_r;

  }

};


int main(void) {
  Circle c;
  c.m_r = 10;
  cout << c.getTotalLength() <<endl;
  return 0;
};

项目实战

可以试着使用c实现一个 脚本语言

不错的教程

ubasic 脚本语言