电商专业学习嵌入式软件开发第二十三天

  • 预科第十二天

今天讲的内容有点多,老师先给我们讲了函数,然后讲了函数指针和函数的应用,中间还给我们穿插讲了部分宏基础。这部分内容够我消化几天了,再加上前几天还没消化完的,真担心后面会跟不上。

1>函数:就是存放代码的包
2>函数需要的基本元素:函数名称,信息参数(形参),函数执行完成的结果
3>怎么定义函数?
数据类型 函数名(数据类型 变量名)
{

}
数据类型:void,int,char,float,double,int *,float *,....自定义的结构体,
void:空类型,可以没有return ,也可以有return;有return不能在后面返回变量;
int,float..:必须要有return,而且return后面必须要有值,而且值的数据类型要和函数的数据类型保持一致
4>函数的调用
函数名(实参);
5>
形参:形式参数,没有实际意义,形参只存在于函数定义,
实参:实际上的参数,有实际意义的,实参只存在于函数的调用
6>函数的注意点
(1)函数运行会从上往下找,不会逆行
(2)形式参数列表,不能省略数据类型,即使变量的数据类型一致,中间用,隔开
7>函数的声明
数据类型 函数名(数据类型 变量名);
变量名可以省略,数据类型不可以省略
8>return的作用
(1)结束当前函数的运行
(2)将return后面的值返回给函数调用者
9>函数的递归:函数自己调用自己
10>函数特点
(1)模块性比较强

//求5的阶乘
#include<stdio.h>
#include<string.h>
int jc(int a);
int main()
{
  int res = jc(5);
    printf("res = %d\n",res);
  return 0;
}
int jc(int a)
{
    if(a == 1)
    {
        return a;
    }
    else
    {
        a = a * jc(a - 1);
        return a;
    }
}
//求a和b的和
#include<stdio.h>
#include<string.h>
int sum(int a,int b);
int main()
{
    int a = sum(2,3);
    printf("a = %d\n",a);
  return 0;
}
int sum(int a,int b)
{
    int c = a + b;
    return c;   
}

函数的应用

//自己编写myStrlen函数求字符串长度
#include<stdio.h>
#include<string.h>
int myStrlen(const char *str)//const代表不能通过str修改str所指向的存储单元里面的内容
{
    int count=0;
    while (*str!='\0')
    {
        count++;
        str++;
    }
    return count;
}
int main()
{
    char string[10] = "hello";
    int size = MyStrlen(string);
    printf("size = %d\n",size);
  return 0;     
}
//自己编写MyStrcat函数拼接字符串
#include <stdio.h>
#include<string.h>
char MyStrcat(char *s1,const char *s2) //Strcat拼接字符串
{
    s1 = s1 + MyStrlen(s1);
    while(*s2 != 0)
    {
        *s1 = *s2;
        s1++;
        s2++;
    }
    *s1 = '\0';
}
int main()
{
    char dst[20] = "hello ";
    char source[10] = "world";
    MyStrcat(dst,source);
    printf("dst = %s\n",dst);
  return 0;     
}

1> 宏常量
#define N 7
2> 宏函数
(1)不带参数的宏
#define OUTPUT printf("======\n");
(2)带参数的宏
#define MAX(a,b) a>b?a:b;
3>高级用法
(1)#与#define连用,代表将宏体转换成字符串
#define string(x) #x
(2)\与#define连用

 printf("====\n");```
 (3)##与#define连用,代表拼接

include <stdio.h>

define N 7

define OUTPUT printf("======\n");

define MAX(a,b) a>b?a:b

define test(a,b) ((a)+(b))

define string(x) #x

define OUT printf("====\n");\


printf("====\n");

define getMax(type,functionName) \

type get##functionName(type a,type b)
{
return a>b?a:b;
}
getMax(int, IntMax)
getMax(float, FloatMax)
int main()
{
int max=getIntMax(1,3);
float max1=getFloatMax(1.5, 3.5);
printf("max=%d\nmax1=%f\n",max,max1);

return 0;

}

void test1()
{

OUT
int res=test(1,2)*test(2,3);//1+2*2+3
printf("%d\n",res);
    
char string1[10]=string(123); //char string1[10]="123"
printf("string1=%s\n",string1);

}

函数指针:先算‘*’,代表这个变量是一个指针变量,再算(),代表将来这个指针指向的是一个函数;
函数名就是函数的入口地址

include<stdio.h>

include<string.h>

void test2(int a,int b)
{
printf("====\n");
}
int main()
{
void (p)(int,int);
p=test2;
//通过函数指针调用函数
p(3,4);
(
p)(4,6);
return 0;
}

写一个函数实现变量值的交换int a=4,b=8;

include<stdio.h>

include<string.h>

void swap(int *pa,int pb)
{
int temp=
pa;
pa=pb;
*pb=temp;
}
int main()
{
int a=4,b=8;
//调用交换函数
swap(&a,&b);
printf("a=%d\nb=%d\n",a,b);
return 0;
}

定义一个大小为5一维整型数组,使用函数遍历所有元素进行打印

include<stdio.h>

include<string.h>

//int arr[5]===>int arr[]===>int *arr;
void printArr(int p,int size)
{
int i;
for (i=0; i<size; i++)
{
printf("arr[%d]=%d\n",i,
(p+i));
}
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9};
int size=sizeof(arr)/sizeof(int);
printArr(arr,size);
return 0;
}

求所有元素的个数

int arr[] = {1,2,3,4,5,6,7,8,9};
int size = sizeof(arr)/sizeof(int);
printf("size = %d\n",size);

//arr[2]的结果是多少

include<stdio.h>

include<string.h>

void changeValue(int p[])
{
p[2]=8;
}
int main()
{
int arr[5]={1,2,3,4,5};
changeValue(arr);
printf("arr[2]=%d\n",arr[2]);
return 0;
}

自定义一个大小为6的整型数组,写一个函数,对其从小到大排序,写一个函数对其遍历打印

include<stdio.h>

include<string.h>

void blueSort(int *p,int size)
{
int i,j;
for (i=0; i<size-1; i++)
{
for (j=0; j<size-i-1; j++)
{
if(p[j]>p[j+1])
{
int temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
}
int main()
{
int arr[6]={9,1,5,10,34,2};
blueSort(arr, 6);
printArr(arr, 6);
return 0;
}

>今天老师留了2道作业,对我来说还是很有难度的:
1.实现mystrcpy:
2.截取信息,遇到';'截取 xx1;xx2;xxx
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容