数组、指针、函数、结构的组合

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类型的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值