首页 > 其他分享 >基础

基础

时间:2023-07-23 20:00:20浏览次数:32  
标签:int enum 基础 枚举 printf include day

1.环境设置/程序结构/基本语法

2.数据类型/变量/常量

3.存储类/运算符/判断/循环/函数/作用域规则

4.数组

5.enum(枚举)/字符串

 (1)enum是一种弄基本的数据类型,用于定义一组具有离散值的常量。枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。

枚举语法定义格式:

enum 枚举名 {枚举元素1,枚举元素2,...};

注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};

枚举变量的定义

(1)先定义枚举类型,再定义枚举变量

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;

(2)定义枚举类型的同时定义枚举变量

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;

(3)省略枚举名称,直接定义枚举变量

enum
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;

例1:

#include <stdio.h>
enum season {spring, summer=3, autumn, winter};
int main()
{
    enum season sea=spring;
    printf("%d",sea);
    return 0;
}

例2:

#include <stdio.h>
 
enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
int main()
{
    enum DAY day;
    day = WED;
    printf("%d",day);
    return 0;
}

枚举是连续的是可以进行遍历的:

#include <stdio.h>
 
enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
int main()
{
    // 遍历枚举元素
    for (day = MON; day <= SUN; day++) {
        printf("枚举元素:%d \n", day);
    }
}

但是不连续是不可以进行遍历的:

enum
{
    ENUM_0,
    ENUM_10 = 10,
    ENUM_11
};

例:在switch中的应用

#include <stdio.h>
#include <stdlib.h>
int main()
{
    enum color { red=1, green, blue };
    enum  color favorite_color;
    /* 用户输入数字来选择颜色 */
    printf("请输入你喜欢的颜色: (1. red, 2. green, 3. blue): ");
    scanf("%u", &favorite_color);
 
    /* 输出结果 */
    switch (favorite_color)
    {
    case red:
        printf("你喜欢的颜色是红色");
        break;
    case green:
        printf("你喜欢的颜色是绿色");
        break;
    case blue:
        printf("你喜欢的颜色是蓝色");
        break;
    default:
        printf("你没有选择你喜欢的颜色");
    }
    return 0;
}

例:将枚举类型转换为整数

#include <stdio.h>
#include <stdlib.h>
int main()
{
    enum day
    {
        saturday,
        sunday,
        monday,
        tuesday,
        wednesday,
        thursday,
        friday
    } workday;
    int a=1;
    enum day weekend;
    weekend = ( enum day ) a;  //类型转换
    //weekend = a; //错误
    printf("weekend:%d",weekend);
    return 0;
}

(2)字符串

字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。

空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。

例:

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};

依据数组初始化规则,您可以把上面的语句写成以下语句:

char site[] = "RUNOOB";

例:

#include<stdio.h>
int main()
{
    char site[7]={'R','U','N','O','O','B','\0'};
    printf("%s",site);
    return 0;
}

C 中有大量操作字符串的函数:

(1)strcpy(s1, s2);             复制字符串 s2 到字符串 s1。

(2)strcat(s1, s2);              连接字符串 s2 到字符串 s1 的末尾。

(3)strlen(s1);                    返回字符串 s1 的长度。

(4)strcmp(s1, s2);            如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。

(5)strchr(s1, ch);              返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。

(6)strstr(s1, s2);               返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

#include <stdio.h>
#include <string.h>
 
int main ()
{
   char str1[14] = "runoob";
   char str2[14] = "google";
   char str3[14];
   int  len ;
 
   /* 复制 str1 到 str3 */
   strcpy(str3, str1);
   printf("strcpy( str3, str1) :  %s\n", str3 );
 
   /* 连接 str1 和 str2 */
   strcat( str1, str2);
   printf("strcat( str1, str2):   %s\n", str1 );
 
   /* 连接后,str1 的总长度 */
   len = strlen(str1);
   printf("strlen(str1) :  %d\n", len );
 
   return 0;
}

6.结构体

 

 

7.指针/函数指针与回调函数

如动态内存分配,没有指针是无法执行的。

每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。

以下是有效的指针声明:

int    *ip;    /* 一个整型的指针 */
double *dp;    /* 一个 double 型的指针 */
float  *fp;    /* 一个浮点型的指针 */
char   *ch;    /* 一个字符型的指针 */

例:

#include <stdio.h>
 
int main ()
{
   int  var = 20;   /* 实际变量的声明 */
   int  *ip;        /* 指针变量的声明 */
 
   ip = &var;  /* 在指针变量中存储 var 的地址 */
 
   printf("var 变量的地址: %p\n", &var  );
 
   /* 在指针变量中存储的地址 */
   printf("ip 变量存储的地址: %p\n", ip );
 
   /* 使用指针访问值 */
   printf("*ip 变量的值: %d\n", *ip );
 
   return 0;
}

 空指针:

#include <stdio.h>
 
int main ()
{
   int  *ptr = NULL;
 
   printf("ptr 的地址是 %p\n", ptr  );
 
   return 0;
}

 

 

 

8.共用体

 

9.位域/typedef/输入输出

 

文件读写/预处理器/头文件

 

11.强制类型转换/错误处理

12.递归/可变参数

 

13.内存管理

 

14.命令行参数

 

标签:int,enum,基础,枚举,printf,include,day
From: https://www.cnblogs.com/ZongZhe/p/17574403.html

相关文章

  • 6-4 整数数位和(高教社,《Python编程基础及应用》习题8-3)
    6-4整数数位和在计算机编程中,我们经常需要对数字进行各种操作和计算。其中,对一个整数进行数位和的计算是一个常见的需求。本文将介绍什么是整数的数位和,并给出一个用Python实现的计算数位和的示例代码。什么是整数的数位和整数的数位和是指将一个整数中每个数字相加的结果。例......
  • CSS常用基础
     #选择id. 选择类名 position:absolute;这是CSS中用于设置元素定位方式的属性之一。absolute表示该元素会脱离文档流,并相对于它的最近的非static(默认值)定位的父元素进行定位。如果没有符合条件的父元素,那么该元素会相对于整个文档进行定位。使用absolute,元素......
  • 前端基础之BOM和DOM
    Js:js的三部分组成:ECMAScriptBOM(浏览器对象模型,就是js操作浏览器):大部分内容作为了解DOM(文档对象模型,js操作html文档、css样式等):需要熟练掌握window对象所有浏览器都支持window对象。它表示浏览器窗口。window对象常用方法:●window.innerHeight:浏览......
  • 设计模式:可复用面向对象软件的基础 pdf电子书分享
    《设计模式:可复用面向对象软件的基础》是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年设计经验的结晶。四位顶尖的面向对象领域专家精心选取了最具价值的设计实践,加以分类整理和命名,并用简洁而易于重用的形式表达出来。本书已经成为软件开发人员的圣经和词典,书中定......
  • 【FPGA基础】时钟设计与异步复位同步撤离设计
    一、时钟设计1、时钟分频设计累加器时钟分频(32分频)always@(posedgeclkandnegedgerst_n)beginif(!rst_n)clk_cnt<=5'b0;elseclk_cnt<=clk_cnt+1'b1;end 异步时钟分频(32分频)always@(posedgeclk)clk_2<=~clk_2;alwa......
  • salesforce零基础学习(一百二十九)Lead Convertion 有趣的经历
    本篇参考:https://help.salesforce.com/s/articleView?id=000382564&type=1LeadConvertion是salesforce中salescloud的一个很好用的功能。salescloud流程可以简单的理解成leadtocash。当对lead进行打分以及不断的孵化以后,优质lead会转成Account&Contact&Opportunity。......
  • java基础复习
    1、string、stringbuilder和stringbuff的区别可变性:String是不可变的(immutable),一旦创建就不能修改,每次对字符串的操作都会创建一个新的字符串对象。StringBuilder和StringBuffer是可变的(mutable),可以直接修改已有的字符串对象,而不需要创建新的对象。线程安全性:String是线程安全......
  • 随笔02---JavaSE基础知识
    (1)基本数据类型:八大基本数据类型:1、整数类型:byte占1字节short占2字节int占4字节long占8字节(定义时后面加L)2、浮点数类型:float占4字节(后加F)double占8字节3、字符类型:char占2字节4、布尔类型:boolean占1个比特位(1bit)(2)引用数据类型:类、接口、数组-------------......
  • 《Kali渗透基础》10. 提权、后渗透
    目录1:提权2:Admin提权为System2.1:at2.2:sc2.3:SysInternalSuite2.4:进程注入提权3:抓包嗅探4:键盘记录5:本地缓存密码5.1:PwDump5.2:WCE5.3:fgdump5.4:Mimikatz6:利用漏洞提权6.1:Windows6.2:Linux7:利用配置不当提权7.1:icacls7.2:find8:信息与数据收集8.1:Linux8.2:Windows8.2.1:WMIC9:痕迹隐藏......
  • 《Kali渗透基础》09. 漏洞利用、后渗透
    目录1:漏洞基本介绍1.1:漏洞从哪里来1.2:缓冲区溢出1.3:如何发现漏洞2:漏洞利用2.1:EXP选择与修改2.2:避免有害的EXP3:后渗透阶段3.1:Linux上传文件3.2:Windows上传文件本系列侧重方法论,各工具只是实现目标的载体。命令与工具只做简单介绍,其使用另见《安全工具录》。本文以kali-......