C++引用语法

初级使用

  1. #include <stdio.h>
  2. void modify_num(int& b)
  3. {
  4. ++b;
  5. }
  6. int main()
  7. {
  8. int a = 10;
  9. modify_num(a);
  10. printf("a=%d\n", a); // a=11
  11. return 0;
  12. }

指针的引用

记住一点:& 始终紧贴变量

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void modify_num(int& b)
  4. {
  5. ++b;
  6. }
  7. // 使用引用就可以抛弃二级指针了
  8. // & 始终紧贴变量
  9. void modify_pointer(int*& p)
  10. {
  11. p = (int*)malloc(20);
  12. p[0] = 5;
  13. }
  14. int main()
  15. {
  16. int* p = NULL;
  17. modify_pointer(p);
  18. printf("p[0]=%d\n", p[0]); // p[0]=5
  19. return 0;
  20. }

结构体指针

  1. #include <stdio.h>
  2. typedef struct student {
  3. int num;
  4. char name[20];
  5. char sex;
  6. } STU;
  7. int main()
  8. {
  9. STU s = { 1001, "yyy", 'M' };
  10. STU* p = &s;
  11. printf("%d %s %c\n", (*p).num, (*p).name, (*p).sex); // 注意“成员运算符”的优先级最高
  12. printf("%d %s %c\n", p->num, p->name, p->sex); // 指针的成员选择
  13. return 0;
  14. }
  1. #include <stdio.h>
  2. typedef struct student {
  3. int num;
  4. char name[20];
  5. char sex;
  6. } STU;
  7. int main()
  8. {
  9. STU sArr[3] = { 1001, "lilei", 'M', 1005, "zhangsan", 'M', 1007, "lili", 'F' };
  10. STU* p = sArr;
  11. int num;
  12. num = p->num++;
  13. printf("num=%d, p->num=%d\n", num, p->num); // num=1001, p->num=1002
  14. num = p++->num;
  15. printf("num=%d, p->num=%d\n", num, p->num); // num=1002, p->num=1005
  16. return 0;
  17. }