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,再按回车即可
posted @ 2021-01-26 23:31  empty_thought  阅读(78)  评论(0)    收藏  举报