—传值调用1.函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
—当实参传给形参的时候形参其实是实参的一份临时拷贝
—传址调用2.传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
—这种传参方式可以让函数和函数外边的变量建立真正的联系,也就是函数内都可以直接操作函数外部的变量。
相关练习:1.写一个函数可以判断一个数是不是素数。
2.写一个函数判断是不是闰年。
3.写一个函数,实现一个整形有序数组的二分查找。
4.写一个函数,每调用一次这个函数,就会将num的值加1.
新学函数:1.字符串拷贝:strcpy(arr1,arr2),其实质就是将arr2的字符串拷贝到arr1中,注意字符串arr1的长度一定要大于arr2否则将会溢出
2.memset(数组,字符,常数)其实质就是将某个字符复制记忆到某个数组中,该常数决定复制记忆到该数组中字符的个数。
以上两个函数在使用时候都需要引用头文件#include<stdio.h>
代码如下
#include<stdio.h>
#include<math.h>
/*int Er_Fen(int arr[], int k, int sz)
{
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] > k)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else {
return mid;
}
}
if (left > right)
return -1;
}
int main()
{
int k = 6;
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
int ret=Er_Fen(arr, k,sz);
if (-1 == Er_Fen(arr, k, sz))
{
printf("找不到");
}
else {
printf("找到了下标为%d", ret);
}
return 0;
}*/
/*is_prime(int a)
{
int b = 0;
for (b = 2; b <= sqrt(a); b++)
{
if (0 == a % b)
return 0;
}
return 1;
}
int main()
{
int a = 0;
int c = 0;
for (a = 100; a <= 200; a++)
{
if (1 == is_prime(a))
{
printf("%d\n", a);
c++;
printf("%d\n", c);
}
}
return 0;
}*/
/*int is_prime(int x)
{
if ((x % 400 == 0) || (x % 4 == 0 && x % 100 != 0))
{
return 1;
}
else
return 0;
}
int main()
{
int b = 0;
int a = 0;
for (a = 1900; a <= 2000; a++)
{
is_prime(a);
printf("闰年是%d\n", a);
b++;
printf("%d\n", b);
}
return 0;
}*/
/*int ex_nu(int* x, int* y)
{
int temp = 0;
temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int a = 10;
int b = 30;
ex_nu(&a,&b);
printf("交换后的数为%d %d ", a, b);
return 0;
}*/
/*Add(int* p)
{
(*p)++;
}
int main()
{
int num = 0;
Add(&num);
printf("%d", num);
Add(&num);
printf("%d", num);
Add(&num);
printf("%d", num);
return 0;
}*/
/*int main()
{
char arr1[] = "bit";
char arr2[] = "############";
strcpy(arr2, arr1);
printf("%s", arr2);
return 0;
}*/
/*int main()
{
char arr1[] = "hello world";
memset(arr1, '*', 5);
printf("%s", arr1);
return 0;
}*/