C语言函数分为两种

1.库函数

1.IO函数(Input and Output)

2.字符串操作函数

以strcpy为例:

strcpy:
char * strcpy ( char * destination, const char * source );
//可见返回值类型是地址

strcpy可以连\0一起拷贝

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "bit";
	char arr2[20] = "#########";
	//               bit\0#####,当printf%s遇到\0时停止打印。因为\0是字符串结束的标志
	strcpy(arr2, arr1);  源头比目的地的字符串长时必然会溢出
	printf("%s\n", arr2);
	return 0;
}

3.字符操作函数

4.内存操作函数

以memset为例

memset
void * memset ( void * ptr, int value, size_t num );

意思是将ptr的前num个字节定义为量value

eg:

int main()
{
	char arr[] = "hello world";
	memset(arr,'*',5);//字符在内存中存的是ascii值,就是一个整数
	printf("%s\n", arr);
}

5.时间/日期函数

6.数字函数

7.其他

2.自定义函数

编写的一般思路:先把函数怎么用想明白,再去编写函数的内容

1.参数

1.实参:无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的量,以便把这些值传送给形参。

2.形参:只在函数范围内有效。

2.调用

1.传值调用:形参只是实参的一份拷贝(值相同),但与实参毫无关系

2.传址调用:可以让形参与实参真正建立关系

void Swap2(int* X, int* Y)
{
	int tmp = 0;
	tmp = *X;
	*X = *Y;
	*Y = tmp;
}
int main()
{
	int a = 10;
	int b = 20;
	int temp = 0;
	printf("a=%d b=%d\n", a, b);
	Swap2(&a, &b);
	printf("a=%d b=%d", a, b);
	return 0;
}


简单的应用

一、请打印出200以内的素数(其实不太懂这个函数怎么编写的)

int is_prime(int n)
{
	int j=0;
  for(j=1;j<n;j++)
  {
  	if(n%j==0)
    {
    	return 0;
    }
    return 1;
  }
}
int main()
{
	int i=0;
  for(i=1;i<=200;i++)
  {
  	if(1==is_prime(i))
    	printf("%d\n",i);
  }
	return 0;
}

二、判断一年是否为闰年

int is_leap_year(int x)
{
	if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
    return 1;
  else
    return 0;
}
int main()
{
	int year = 0;
  while(year<=2000)
  {
  if(1==is_leap_year(year))
    printf("%d\n",year);
  year++;
  }
	return 0;
}

三、二分查找(完全不懂)

int binary_search(int arr[], int k)
{
	int left = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int right = sz - 1;
	
	while (left<=right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else if (arr[mid] > k)
		{
			right = mid - 1;
		}
		else
		{
			return mid;
		}
	}
	return -1;
}
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 7;
	int ret = binary_search(arr,k);
	if (-1 == ret)
	{
		printf("没找到对应的数字\n");
	}
	else
	{
		printf("找到了,下标为%d\n", ret);
	}
}