c/c++总结(二) 指针,结构体基础知识总结

指针:
指针本身是一个变量,存储的是数据在内存中的地址而不是数据本身的值
定义方式如下图:

 int a=10,*p;  //p变量为指针变量
 p=&a;//指针存储地址,取地址,地址指向的数据值
 int a=10;
 int *p=&a;
int* 这个是要定义一个指针p,这个指针存储的是地址,因此要对a取地址(&)将值赋给指针p,也就是说这个指针p指向a。
俩红定义方法其实是一样的。第一种定义方法定义了int型的变量a和指针p,然后将a的地址赋给p。第二种是在定义指针p的同时将a的地址赋给指针p。我们姑且理解为" int * "是定义指针的标志。

p和*p联系与区别:
联系:俩者都是地址
区别:
p代表的地址的p指向的数据的地址
*p代表的是p的地址

数组:
数组本身的名称也是一个地址,它可以被理解为一个常指针(它只能指向本数组首元素的地址)。而指针可以指其他的变量等等。

指针指向数组:

int array[5]={
    
    0,1,2,3,4};
int *p=array;//指向首元素地址
printf("%d",*(p+1));//指向p[1]

定义一个数组并初始化,int array[5]={0,1,2,3,4};定义一个指针变量并把数组的地址赋给它,int *p=array,注意数组名就是数组的地址,而且数组的地址就是首元素的地址。

结构体:
结构体(struct)是指由一系列具有相同类型或不同类型的数据构成的数据集合。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

struct student
{
    
    
   char *name;
   int ages;
};

指针指向结构体:
定义一个指针指向结构体类型,结构体变量的地址赋给指针变量p

struct student stu={
    
    "Rose",15};
struct student *p;
p=&stu;

 struct stu* p = &stu;//第二种定义方式

有3种方式来访问结构体中的属性ages:

stu.ages=15;
(*p).ages=15;
p->ages=15;//只能在C语言中只能用来指向结构体。

sizeof(stu)用来测结构体长度,printf(“结构体长度=%d”,sizeof(stu));

猜你喜欢

转载自blog.csdn.net/qq_38205273/article/details/108593061