2021寒假专题2
今天重新学习了指针数组,数组指针,指针函数,函数指针
学了动态分配数组的calloc malloc realloc以及释放空间的free
include <stdio.h>
int sum(int num1,int num2)
{
return num1+num2;
}
int sub(int num1,int num2)
{
return num1-num2;
}
int culcalate(int (*fp)(int,int),int num1,int num2)
{
return (*fp)(num1,num2);
}
int main()
{
printf("%d",culcalate(sum,2,3));
printf("%d",culcalate(sub,2,3));
}
include <stdio.h>
#include <string.h>
int square(int n)
{
return n*n;
}
int main()
{
int num=9;
int (*fp)(int);//格式一致,指向函数
fp=square;
printf("%x %d\n",fp,(fp)(num));
printf("%x %d\n",*fp,(*fp)(num));
//int *f()指针函数 返回指针的函数 函数分配的临时空间可能已经收回
//int (*f)()函数指针 代码会占据一段空间 用函数名赋值给指针
//int (*p)[]指向数组的指针 数组指针
//int *p[] 指针数组 每个元素都是指针
}
include <stdio.h>
#include <stdlib.h>
int main()
{
//动态数组分配
//malloc开辟一个内存
//calloc开辟多个内存,且个数可变
//realloc调整空间大小
int *parr=NULL;
//开辟内存空间 多大空间
//parr指向开辟的空间(int*)是开辟空间数据的类型,括号是单元大小
parr=(int *)malloc(sizeof(int));
//calloc(5,4)开辟五个连续的空间,每个空间四个字节
int *parr1;
//parr1=(int *)calloc(5,sizeof(int));//parr1动态一维数组
int num;
scanf("%d",&num);
parr1=(int *)calloc(num,sizeof(int));//动态数组
int *parr2;
parr2=(int *)realloc(parr2,) //缩减地址不变,扩充会检查有没有剩余空间可以使用,会重新找一个空间
//free释放空间 p仍是指向这个空间,访问却是非法访问
//p指向一个空间后指向其他空间,那么原来的空间就是内存泄漏
//malloc calloc realloc开辟的空间free释放
free(parr2);
int **parray;
int n,m;
parray=(int **)calloc(n,sizeof(int *));
for(int i=0;i<5;i++)
{
parray[i]=(int *)calloc(m,sizeof(int));
}
}
计算一个程序运行的时间,可以采用
include <time.h>
printf("Time used:%.2f\n",(double)clock()/CLOCKS_PER_SEC);//clocks per sec
以及freopen打开文件,避免了测试样例的多次输入
死循环的scanf如何停止输入
while(scanf("%d",&x)==1)
{
sum+=x;
}
printf("%d",sum);
//先按回车,再按Ctrl+Z,再按回车即可

浙公网安备 33010602011771号