linux编程之C语言6

2025-04-23 05:50:57

1、一:递归函数 函数自己调用自己递归函数必须有结束条件。func(int a ){ if(a != 5)func(a-1);}练习: 利用递归计算1到10的平方数之和

linux编程之C语言6

2、二:局部变量和全局变量、形参的使用和作用域 GNU-C中的虚拟内存分布 局部变量:在 { }内定义的变量, 作用范围是从变量定义的地方到对应的}在不同代码块{ }可以有同名的变量,作用范围不一致全局变量:在 { }外定义的变量, 作用范围是从定义的地方到文件的最后,且可以被其他文件中的函数所调用如果局部变量和全局变量,优先使用局部变量

linux编程之C语言6

3、形参: 是在定义函数的时候在( )中定义, 作用范围是整个函数var.罕铞泱殳c:5:8: error: ‘x’ redeclared as different kind of symbol函数最大{ }中的局部变量名不能和形参名一致 int func( int x){printf(“x = %d \n”, x);int y ;// 是从此时开始才可以使用局部变量yprintf(“y = %d \n”, y);}

4、extern 叫外部调用声明 对应的函数或者是全局变量可能不是本文件中定义的static 静态static int a ; 静态变量a是在内存的数据段中的 静态变匪犬挚驰量只会被定义和初始化一次,此后使用的都是已申请空间的最新值如果static 是在代码块、函数中定义, 则为静态局部变量 如果是在所有函数之外定义的 ,则为静态全局变量const在本次运算过程中的“常量” ,值不会被修改char *strcat(char *dest, const char *src); 把src中的字符全部复制到dest的后面 “hello ” “world” ==> helloworld --> dest

linux编程之C语言6

5、练习: 编写一个函数 add_func, 要求在程序中记录自己被调用的次数 在主函数中,循环根据输入的符号来实习数据的运算如输入了2个整数后, 此时输入字符‘+’ 就调用add_func( ) 直接计算并显示出结果同时在main记录函数add_func的返回值, 确定调用的次数输入字符‘-’ 就调用dec_func( ) 直接计算并显示出结果

6、复合数据类型:结构体用来描述一个事物不同方向的属性,1)结构体类型的定义:1) struct 结构体类型名{成员1的类型 成员1的名字;成员2的类型 成员2的名字;成员3的类型 成员3的名字;.。。。。。。};2) typedef ( )如要定义一个结构体类型struct info,包含有3方面信息, 姓名、班级、年龄struct info{char name[16] ;int class;unsigned char age ;// 【0~255】};2) 占用空间的计算int char ---- 占用字节数不一致 sizeof(int) 新类型 struct info 到底占用了多少字节 sizeof(struct info)struct info{char name[16] ; // char [16] --> 16int class; // ---> 4unsigned char age ;// 【0~255】 ---> 1+3};struct info1 { char name[16]; // 16 short class; // 2 unsigned char age; // 1+1 };在计算结构体实际占用空间大小时候,1) 要先找到占用字节数最多的基本数据类型(max_b),在成员地址对齐的时候, 会以max_b作为参考如占用字节数最多的是short类型 最终结果以2对齐, “每个房间都能放2B”如占用字节数最多的是int类型 最终结果以4对齐, “每个房间都能放4B”如占用字节数最多的是long , 64位机最终结果以8对齐, “每个房间都能放8B”; 32位机以4对齐, “每个房间都能放4B”如占用字节数最多的是double类型 最终结果以8对齐, “每个房间都能放8B”如占用字节数最多的是指针类型,, 64位机最终结果以8对齐, “每个房间都能放8B”; 32位机以4对齐, “每个房间都能放4B”2) 在中间成员对齐时候,short以2对齐, char 以1 ,long、double 以8对齐float / int 是以4对齐3) 定义一个结构体类型的变量 struct info{char name[16] ; // char [16] --> 16int class; // ---> 4unsigned char age ;// 【0~255】 ---> 1+3}; a)不带初值的定义结构体类型名 变量名 ;struct info zhangsan ; // 定义一个结构体类型为struct info的变量zhangsan b) 带初值的定义 只有在定义的时候可以直接给结构变量的成员一次性赋值结构体类型名 变量名 = { 依次给对应的成员赋值 };结构体变量中的成员用 . 来表示struct info student= { “zhangsan” , 1812 , 20 }; // 扩展性不好建议在定义的时候逐个给指定成员赋值struct info student= { .name=“zhangsan”, .class = 1812 , .age=20 };struct info student= { .name=“zhangsan” , .age=20 };4) 使用变量struct info{char name[16] ; // char [16] --> 16int class; // ---> 4unsigned char age ;// 【0~255】 ---> 1+3}; a) 直接使用结构体变量名student = { “lisi” , 1812, 21 }; // NG !! 只有定义时候可以一次性赋值struct info stu1 = {“zhangsan ” , 1812 , 21};struct info stu2 = { “lisi ” , 1810 , 22};struct info max ;找出这两个变量中年龄比较大的,把他的整个信息赋值给结构体变量maxmax = stu2; //直接整个变量值都赋值给另一个变量 okb) 使用结构体变量中的成员struct info stu1;struct info stu2;struct info max ;scanf ( “%s” , stu1.name) ;// &(stu1.name[0])scanf ( “%d” , &stu1.class) ;scanf ( “%hhd” , &stu1.age) ;scanf ( “%s” , stu2.name) ;// &(stu1.name[0])scanf ( “%d” , &stu2.class) ;scanf ( “%hhd” , &stu2.age) ;if ( stu1.age > stu2.age)max = stu1;elsemax = stu2;练习:先定义一个结构体类型 struct info 再定义同类型的2个变量 , 利用键盘给这两个结构体变量中的所有成员赋值,比较其中的一个成员(如 .age),把较大的变量直接赋值给结构体类型变量max输出max的全部成员信息

linux编程之C语言6
linux编程之C语言6

7、补充作业:

linux编程之C语言6

8、4: 创建一个结构体类型,里面至少有名字和年龄定义对应结构体数组,里面有5个元素struct info array[5];从键盘对该数组的全部元素的成员进行输入, for()array[i].name &array[i].age分别找出其中年龄最大的元素以及其中名字最小的元素并打印出来5: 创建一个结构体类型, 定义对应结构体数组 需要对该结构数组进行增 删 查 改

linux编程之C语言6
linux编程之C语言6
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢