struct和 typedef struct

1. C语言中

  • 在C中定义一个结构体类型一般使用typedef
typedef struct student{
    int a;
}stu;

// 有 typedef,声明变量可以如下:
stu stu1;
// 没有 typed 声明变量需要如下:
struct student stu1;

// stu 等于 struct student
// 另外这里也可以省略掉student

2. C++中

// 情况1 
struct student{
    int a;
};

//直接使用
student stu2;

// 情况2 
struct student{
    int a;
}stu1;   // stu1 是一个变量

// 情况3
typedef struct student{
    int a;
}stu2;  // stu2 是一个新的结构体类型 等同于student

// 使用时
int data = stu1.a //可以直接调用
stu2 student2;
student2.a = 1; // 创建一个结构体实例才可以调用

3. 引用和指针

int a=10;
int p=a;

这种情况,p与a是不同的变量,这里是将a的值赋给p

int &p=a;

即 p是a 的别名,p和a其实是同一个整形变量,两个占用同一块内存空间,如果有 p=15;那么a也是15,修改p与修改a是完全等价的
那么

int *a;
int * &p=a; 

很容易理解,把 int * 看成一个类型,a就是一个整型指针,p是a的别名

你可能感兴趣的:(struct和 typedef struct)