您的位置:首页 > 运维架构 > Linux

苏嵌嵌入式Linux实训第六天

2020-07-14 06:34 274 查看

交换两个数字

1 #include<stdio.h>
2 void swap(int a[2])
3 {
4 int i;
5 i=a[0];
6 a[0]=a[1];
7 a[1]=i;
8
9 }
10 int main()
11 {
12
13 int a[2]={1,2};
14
15 swap (a);
16 printf("%d%d",a[0],a[1]);
17 return 0;
18 }

结果如下
[root@localhost 709]# vim l.c
[root@localhost 709]# gcc l.c
[root@localhost 709]#
[root@localhost 709]# ls
a.out l.c tem_m.c yu.c
[root@localhost 709]# ./a.out
21[root@localhost 709]#

颠倒数字顺序

1 #include<stdio.h>
2 int main()
3 {
4 int i=0;
5 char b;
6 char a[10]=" “;
7 char b1[10]=” “;
8 int x;
9
10 do{
11 b=getchar();a[i]=b;i++;
12 }
13 while(b!=’\n’);
14 x=i-1;
15
16 for(int j=0;j<=i;j++)
17 {
18 b1[j]=a[x];
19 x–;
20 }
21 printf(”%s",b1);
22
23 return 0;

结果如下
[root@localhost 709]# vim tem_m.c
[root@localhost 709]# gcc tem_m.c[root@localhost 709]# ls
a.out l.c tem_m.c yu.c
[root@localhost 709]# ./a.out
123

321[root@localhost 709]#

释放空间内存函数free

调用形式:
free(void*ptr);

功能:释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域。

free函数只是将参数指针指向的内存归还给操作系统,并不会把参数指针置NULL,为了以后访问到被操作系统重新分配后的错误数据,所以在调用free之后,通常需要手动将指针置NULL。从另一个角度来看,内存这种底层资源都是由操作系统来管理的,而不是编译器,编译器只是向操作系统提出申请。所以free函数是没有能力去真正的free内存的。只是告诉操作系统它归还了内存,然后操作系统就可以修改内存分配表,以供下次分配。

当我们使用free函数释放内存的时候,函数会把内存块的首地址加上16,从这个位置就可以找到内存块的大小。

分配空间函数malloc

调用形式:

(类型说明符*)malloc(size)

功能:在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址。

“类型说明符”表示把该区域用于何种数据类型。

(类型说明符*)表示把返回值强制转换为该类型指针。

“size”是一个无符号数。

static类型

当main函数是static类型的,就是表示是可以通过类.main进行访问的。如果amountapples不是static类型,在main函数里面无法访问的,因为要访问amountapples必须是通过类的实例的方式进行访问的。可以在main函数里面直接用int amountapples来进行申明或定义。这个时候这个amountapples是一个局部变量。无法在main函数以外进行访问。
在我们想定义一个静态变量的时候使用的,就是说想直接用类.函数名/变量名的方式进行访问时,需要加上static。

typedef功能

重命名的好处是能区分不同场合使用不同数据类型,为了让在不同使用环境下让数据类型变得有“具体含义”
例如int可以重名名为size,long,length等
linux内核中,很多很复杂的“结构”,例如内存结构描述符,进程结构描述符,但它们也会有类似上面那种情况,需要用在不同的背景下;因此,经常使用typedef重命名。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: