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 nn;
}
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,再按回车即可

posted @ 2021-01-26 23:31  empty_thought  阅读(87)  评论(0)    收藏  举报