1.结构数组与结构指针
定义一个结构体
typedef struct student{
int num;
char name[20];
int score;
}student;
结构数组
student st[N];//该数组st中有N个student,每个student都有相应的num、name、score.如:st[0].num表示第一个学生的学号
.
结构指针
student *st=&student;
st=(*student)malloc(sizeof(student)*N);//向内存申请空间为(结构student*总人数)的长度,本文为4+20+4.
实例:
#include<stdio.h>
#include<stdlib.h>
typedef struct student{
int num;
char name[20];
int score;
}student;
void main()
{
int i,n;
/* 结构指针
student *students=&student;
students=(student*)malloc(sizeof(student)*n);
*/
/*结构数组
student students[N];
scanf("%d",&n);
*/
for(i=0;i<n;i++)
{
scanf("%d%s%d",&students[i].num ,students[i].name ,&students[i].score );
}
for(i=0;i<n;i++)
{
printf("%d %s %d\n",students[i].num ,students[i].name ,students[i].score );
}
//free(students);
}
2.指针函数与函数指针
函数指针:是一个指向函数的指针
int func(int x); /* 声明一个函数 */
void (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
(*f)(a); /* 调用函数 */
实例:
#include<stdio.h>
int max(int x,int y){ return(x>y?x:y); }
int main()
{
int (*ptr)(int, int);
int a,b,c;
ptr=max;
scanf("%d%d",&a,&b);
c=(*ptr)(a,b);
printf("a=%d,b=%d,max=%d",a,b,c);
}
.
.
指针函数:是一个返回指针的函数
实例:
int* getIntPoint(const int a) //指针函数,是一个函数 返回一个指针;
{
int *p = nullptr ;
p = new int ;
*p = a;
return p ;
}
3.数组指针和指针数组
指针数组
是一个数组,数组的元素保存的是指针;
定义:
int *p[size] //表示数组存的是指针,有size个指针数据
数组指针
数组指针是一个指针,该指针指向的是一个数组;
定义:
int (*p)[size] //数组指针,存储size个int类型的数据