admin管理员组

文章数量:1516870

指针~~~

维生素C吃多了会上火-个人CSDN博文目录
2022蓝桥杯

目录

  • 指针
    • 指针与数组
      • 数组指针
      • 指针数组
    • 指针与字符串
    • 指针与函数
      • 指针函数
      • 函数指针
    • 指针与结构体
      • 结构体指针
      • 结构体数组的指针

指针

//指针变量定义
int *p=NULL;
//给指针变量赋值
p=&a;
int *q=&a;
//读出指针的值
cout<<*q;
//指针变量的+、-运算
p++:根据类型int增加sizeof(int),即刚好“跳过”一个整数的空间,达到下一个整数。 

指针与数组

数组指针

优先级:()> [ ] > *
数组指针:它实际上是一个指针,该指针指向一个数组。

int (*p)[8];
//p先和*结合,说明p是一个指针变量
//这句话的意思就是:指针p指向一个大小为8个整型的数组。

//一维数组
int a[5] = { 1, 2, 3, 4, 5 };
//步长为5的数组指针,即数组里有5个元素
int (*p)[5];
//把数组a的地址赋给p,则p为数组a的地址,则*p表示数组a本身
p = &a;

指针数组

它实际上是一个数组,数组的每个元素存放的是一个指针类型的元素。

int *p[8];
//说明p[8]是一个数组,而int*是数组里面的内容,p是数组名
//这句话的意思就是:p是一个含有8和int*的数组

int a = 1;
int b = 2;
int *p[2];
p[0] = &a;
p[1] = &b;

指针与字符串


char *str="I love China!";
//%s是输出字符串时所用的格式符,在输出项给出字符指针变量名,则系统先输出它所指向的一个字符数据,然后自动使str加1,使之指向下一个字符,然后输出字符直到字符串遇到"\0"为止
printf("%s\n",str);

指针与函数

指针函数

这是一个函数,返回类型为指向int的指针

int *fun(int x,int y);
int * fun(int x,int y);
int* fun(int x,int y);

函数指针

这是一个指针,指向这个函数

//定义
int (*fun)(int x,int y);
//赋值
fun = &Function;
fun = Function;
//调用这个函数
int a=(*fun)()
int b=fun()

指针与结构体

结构体指针

struct STUDENT
{char name[20];  //姓名int num;  //学号float score;  //分数
};
//定义
struct STUDENT student1;
struct STUDENT *p = NULL;
p = &student1;
//指针引用结构体变量成员
(*p).num;
p->num;
struct node{int x,y;//定义了一个指向node的指针变量pnode *p;
};

结构体数组的指针

# include <stdio.h>
struct STU
{char name[20];int age;char sex;char num[20];
};
int main(void)
{struct STU stu[3] = {{"小红", 22, 'F', "Z1207031"}, {"小明", 21, 'M', "Z1207035"}, {"小七", 23, 'F', "Z1207022"}};struct STU *p = stu;int i = 0;for (; i<3; ++i){printf("name:%s; age:%d; sex:%c; num:%s\n", p[i].name, p[i].age, p[i].sex, p[i].num);}return 0;
}

本文标签: 指针