在Add函数里面定义*p之后,*p所指的也就是&num,神奇神奇
函数内部改变函数外部,得传指针。
void Add(int* p)
{
(*p)++;//这个*p就是main函数里面的num,
}
int main()
{
int num = 0;
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
return 0;
}
结果如下
。。。。。
函数的定义和调用
链式访问
printf ("%d\n",strlen("a,b,c"));
一个函数的返回值是另一个函数的起始值;
#include<stdio.h>
#include<string.h>
//int main()
//{
// char arr1[20] = { 0 };
// char arr2[] = "bit";
// strcpy(arr1, arr2);
// printf("%s\n", arr1);
// return 0;
//}
///
int main()
{
char arr1[20] = { 0 };
char arr2[] = "bit";
printf("%s\n", strcpy(arr1, arr2));
return 0;
}
strcpy (arr1,arr2 ); 是把arr2里面的数据转换到arr1里面去。
新的函数出现,要记住!
打印结果如下:
头文件也是新的,也要记住
,
为什么会是4321,因为 printf 函数返回的是个数值,
printf 43 是返回两个数, printf 2是返回1, 所以最后结果是4321.
静态库
递归题目
接受一个整型值(无符号),按照顺序打印它的每一位,例如:输入1234,输出1234.
1234%10 = 4 ;
1234 / 10 = 123 % 10 = 3
123 /10 = 12%10 = 2
12/10 = 1% 10 = 1
1/10 =0;
printf(1234)
printf(123) 4
printf(12) 3 4
printf(1) 2 3 4
// 接受一个整型值(无符号),按照顺序打印它的每一位,例如:输入1234,输出1234.
//怎么做
void print(unsigned int n)
{
if (n > 9)//大问题拆分
{
print(n / 10); //1234/10 %是求余数
}
printf("%d ", n % 10);
}
int main()
{
unsigned int num = 0;
scanf("%u", &num);
print(num);
return 0;
}
过程如图所示:
递归:有递有归;顺着返回下来,再上去。先红线 , 再绿线。
打印结果是:1 2 3 4.
n/10传给n,
递归条件:
①存在限定条件,不满足条件,不在继续。
②每次调用递归,越来越接近限制条件
www.stackoverflow.com