欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 嵌入式c学习第十天

嵌入式c学习第十天

2025/4/2 1:28:29 来源:https://blog.csdn.net/2301_76865484/article/details/146586771  浏览:    关键词:嵌入式c学习第十天

malloc函数与calloc函数区别

1、参数:malloc只有一个参数,calloc有两个参数

2、堆内存里的数据:malloc申请的堆内存数据未初始化,calloc申请的堆内存数据已初始化

const常量关键字:英文constant的缩写,表示常量。在c语言中一般用于修饰变量,可以降低变量的访问权限,把变量变成只读如:

int a = 10;//变量a是可以可读可写的,const  int b = 20  //变量b是只读变量

利用变量来存储一个常量,需要在定义的时候用const关键字修饰,且必须要完成初始化!

const 修饰指针变量

int * const p:指针常量,const直接修饰指针变量p,表示p的值不能改变,即p指向的地址不能改变

const int *p == int const * p:常量指针,const修饰指针p所指向的地址,表示此地址下的此数据只有在使用*p间接访问时才不能修改

const int *const p:表示指针变量p的值不能改变,且p所指向的地址下面的数据在使用*p访问时也不能改变

递归函数:

1、设计递归函数求1*2*3*.....n;

#include <stdio.h>int mul(int n)
{//结束条件if(1 == n){return n;} //调用自身return mul(n-1) * n;
}int main()
{int n =5;printf("1-%d的积为:%d\n", n, mul(n));return 0; 
}

2、输入字符串,使用递归函数实现字符串逆序输出

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>bool osr(char *p)
{//结束条件if('\0' == *p){return false;} //调用自身osr(p+1);printf("%c", *p); }int main()
{//定义指针变量指向NULL char *p = NULL; //通过calloc申请堆内存,用指针变量接收返回的堆内存的首地址,用于存储用户输入的字符串p = (char *)calloc(1,100);//确认申请堆内存是否成功,错误处理 if(NULL == p){perror("堆内存申请异常");return -1;   //程序异常退出 } //提示用户输入字符串,接收字符串 printf("please input string:");scanf("%s", p);//调用递归函数osr(p);//使用完成释放堆内存,同时让指针再次指向NULL free(p);p = NULL; return 0; 
}

3、通过scanf输入字符串,计算字符串的实际长度

#include <stdio.h>
#include <stdlib.h>int stl(char *p)
{//结束条件if('\0' == *p){return 0;} //调用自身return stl(p+1) + 1;}int main()
{//定义指针变量指向NULL char *p = NULL; //通过calloc申请堆内存,用指针变量接收返回的堆内存的首地址,用于存储用户输入的字符串p = (char *)calloc(1,100);//确认申请堆内存是否成功,错误处理 if(NULL == p){perror("堆内存申请异常");return -1;   //程序异常退出 } //提示用户输入字符串,接收字符串 printf("please input string:");scanf("%s", p);//调用递归函数printf("长度为:%d\n", stl(p));//使用完成释放堆内存,同时让指针再次指向NULL free(p);p = NULL; return 0; 
}

4、费波拿契数

#include <stdio.h>
#include <stdlib.h>int fibnum(int n)
{if(0 == n || 1 == n){return n;}return fibnum(n-1) + fibnum(n-2);
}int main()
{int n=0;while(1){printf("请输入是第几个数:"); scanf("%d", &n);printf("第%d个费波拿契数是%d\n", n, fibnum(n));}return 0; 
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词