结构体,宏,枚举,函数,指针

Posted jianze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体,宏,枚举,函数,指针相关的知识,希望对你有一定的参考价值。

一、结构体

 1 //定义学生的结构体 age score
 2     //从终端输入4个学生的信息
 3     //将这个4个学生的信息按照age升序排序
 4     //输出学生的信息
 5     struct stu {
 6         int age;
 7         float score;
 8     };
 9     
10     struct stu stuInfo[4] = {};    
11     
12     for (int i = 0; i < 4; i++){
13         printf("请输入age:");
14         scanf("%d", &(stuInfo[i].age));
15         printf("请输入score:");
16         scanf("%f", &(stuInfo[i].score));
17     }
18     
19     //排序
20     for (int i =0; i < 4; i++) {
21         struct stu min = stuInfo[i];
22         
23         for (int j = i+1; j < 4; j++) {
24             if (min.age > stuInfo[j].age ) {
25                 struct stu temp = min;
26                 min  = stuInfo[j];
27                 stuInfo[j] = temp;
28             }
29         }
30         
31         stuInfo[i] = min;
32     }
33     
34     for (int i = 0; i < 4; i++) {
35         printf("%d: age:%d score:%f
", i+1, stuInfo[i].age, stuInfo[i].score);
36     }

 

二、宏

 1 //类型重定义 将某一个类型 重新用一个字符串来表示
 2 typedef int PXD_INT;
 3 
 4 /*
 5  结构体的内存分配
 6  1. 同种类型的数据 按照数据本身的字节数来分配
 7  
 8  2. 两种数据 按照字节数最高的靠齐 int double  int类型向double靠齐
 9  struct stu{
10     int age;//8
11     double weight;//8
12  }//16个字节内存空间
13  
14  3. 多种数据遇到一起 最小的向中间的靠齐
15  struct stru{
16     char dd; //4
17     int age; //4
18     long id; //8
19  } 16个字节
20  */



/*
  结构体重新定义之后,就可用Student代替struct stu
*/ 21 typedef struct stu { 22 char name; 23 char dd; 24 int age; 25 long id; 26 } Student;




三、枚举

 1 #include <stdio.h>
 2 /*
 3  宏定义
 4  #define k字符串 要替换的内容(可以是一个值 也可以是一个表达式)
 5  1. 给一个值赋一定的意义 -1 kOUT
 6  2. 在程序运行、调试的时候 更方便了 如果要更改某一个值  只需要在define这一个地方改就可以了
 7  */
 8 #define kOUT 2018;
 9 
10 #define kPIN_UNLOCK 2
11 #define kGRAPTH_UNLOCK 3
12 #define kSLIDE_UNLOCK 1
13 /*
14  永久保存:数据库 文件:图片 视频 UserDefaults
15  枚举
16  1 -> 滑动解锁
17  2 -> PIN解锁
18  3 -> 图案解锁
19  
20  */
21 
22 typedef enum UnlockType {
23     kUnlockTypeSlide = 1,//默认从0开始
24     kUnlockTypePIN,//1
25     kUnlockTypeGraph,//2
26 } kUnlockType;
27 
28 int main(int argc, const char * argv[]) {
29     
30     int a = 0;
31     
32     enum UnlockType type = kUnlockTypeSlide;
33     kUnlockType lType = kUnlockTypeGraph;
34     
35     return 0;
36 }

  注意:枚举类型定义的三个值,在调用时只能使用一个

 

四、函数

 1 /*
 2  函数: 完成特定功能的一个代码块
 3         一个函数只做一件事儿
 4  1.函数的声明
 5  2.函数的实现
 6  */
 7 //函数的声明 1
 8 int add(int a, int b);
 9 
10 //函数的声明 2
11 int minus(int, int);
12 
13 int main(int argc, const char * argv[]) {
14     //不要见到具体的代码
15     //只有逻辑代码
16     //具体实现应该放在函数里面
17     add(2, 4);
18     add(4, 5);
19     int result = add(1, 2);
20     
21     minus(1, 3);
22     return 0;
23 }
24 
25 //下面实现函数
26 int add(int a, int b){
27     int c = a + b;
28     
29     return c;
30 }
31 
32 //函数的参数名在声明的时候可以省略
33 //但是在具体实现的时候是不可以省略的
34 int minus(int a, int b){
35     return a - b;
36 }

四、指针

指针:代码块与代码块之间的数据传递

    指针变量本身占8个字节

 

    

 












以上是关于结构体,宏,枚举,函数,指针的主要内容,如果未能解决你的问题,请参考以下文章

结构体枚举共同体指针bing

结构体枚举共同体指针bing

C语言,宏定义和结构体指针问题,求高手解答啊,谢谢了!!

入职培训笔记记录--day9(1指针函数与函数指针函数指针数组 2malloc memset 3递归函数 4结构体 5共用体---》大小端 6枚举)

C语言语法

同名的类函数宏和枚举器