c语言学习第二课-字符串,转义字符和注释

简介: c语言学习第二课-字符串,转义字符和注释

学习目标:了解字符字符串 ,转义字符等

一,变量的作用范围和生命周期

变量分全局变量与局部变量,作用范围不一样。例:

//在这里添加全局变量 int a=100;即可
int a = 100;
int main()
{
   {
       int a = 100;//作用范围只在该范围内
   }
    printf("%d", a);//在这里是未被定义的变量
    return 0;
}

这里的a若未定义全局变量,则是未被定义变量,括号里的int a=100作用范围只在括号内,无法被下面的printf函数使用,若定义全局变量则可以使用。

注意,定义的全局变量可以在该文件里的其c源文件里使用,不过需要声明,如这里的a  

/声明一下来自外部的全局变量

我们在其他源文件里定义一个int a=1000;则有

extern int a;
int main()
{
 printf("%d",a);
  return 0;
}

在这里全局变量在整个工程里都可以使用。

生命周期

生命周期指的是变量的创建和销毁的一个时间段,例如:

int main()
{
    {
        int a = 10;//创建的局部变量只在该范围内使用,创建就会占用空间。但在区域外,生命周期就结束了,无法在外部使用。
    }
   printf("a=%d\n", a);
    return 0;
}
int a = 1000;//对应的全局变量的整个生命周期是整个工程

这里的a对应的区域的生命周期就可以表示。

常量

c语言的常量有以下分类

字面常量

 int main(
{
    3.14;//浮点型常量
    55;//整型常量
   'a';//字符常量
 return 0;
}

const修饰的常量

 int main()
 {
 const int num=10;//coonst修饰 ,无法修改,具有了常量属性。
 printf("%d\n", num );//10
 num=20;
 printf("%d\n",num);//不可以改为20
return 0;
  }
 int main()
 {
    int a=10;
    int arr[a]={0};这里的a不是常量值,可修改。即使const修饰了也不行,在编译器看来还是个变量。
    return 0;
 }

这里需要注意一下const修饰的是一个变量,虽然无法改变,但编译器认为他是一个变量。比可以用来表示数组大小。

#define定义的标识常量

 #define mmax 100
 int main()
 {
 max=200;无法修改
 printf("%d",max);//100
 return 0;
 }

define定义的是常量,不是变量。

枚举常量

所谓枚举即一一列举,是一种算法。他的枚举里的元素是一个常量。例如:

enum Sex//枚举一个性别
{
    male,//男
    female,//女
   secure//保密
};
int main()
{
    int age;
    enum Sex sex = male;//用这个类型创建了一个变量sex,赋值为male.  此时枚举的元素无法被改变
   return 0;
}

字符串,转义字符

字符, 由一对单引号引起来的都是字符如'a'  'v'。

字符串  "oajoahjoh"由多个字符组成,并由一对双引号引起来。

注意:字符串的结束标志是一个叫做\0的的转义字符,不算做字符串内容

打印字符用%c   例:

int main()
{
    char ch = 'a';
    char arr[] = "abcdef";//这里创建一个字符数组用来存放字符串。
    char arr1[] = { 'a','b','c','d' };//这里再创建一个字符数组,区别是这里是没有\0的,就是四个字符abcd.
    //这里的\0具有重要作用
    //如果打印
    printf("%s\n", arr);//结果abcdef
    printf("%s\n", arr1);//结果abcd乱码
    //\0是结束标志,arr正确打印,而arr1这里打印完abcd后无结束标志,后继续打印直到遇到\0;而这里是随机值
    //这里的函数strlen 也是依靠\0的,
    return 0;
}

在这里需要注意的是字符串,字符串可以直接放数组里储存起来,复制直接是双引号引起的一串字符,这里的字符串拥有\0的结束标志,字符串也可以是一个个字符储存到数组里,这里的字符串是没有以\0为结束标志的,运用函数对字符串时,是需要有\0的字符串,否则函数无法判断其字符串截至到哪里。

转义字符

由\加上特殊字符组成的,其本身意义发生了改变。例:

int main()
{
    printf("abcndef");
    printf("abc\ndef");//\n转义字符,作用是换行
    //\+字符是转义字符。转义的字符是固定的,共有
}
//三字母词
int main()
{
    printf("(are you ok??)");
    //结果(are you ok]
    //旧的编译器会把??)识别成一个字符串,转换成];
    //不希望这样的打印,加\,给他转义,他不会识别为三字母词
    printf("%c\n", '\'');//打印单引号
    printf("%s\n", "\"");//打印双引号
    printf("c:\\test\\test.c");//打印路径,把转义字符转义变成字符
    //c:\test\test.c
    //\a产生蜂鸣声
    printf("\a");
    //重点说下\ddd \xdd
    //ddd代表可以是一到三个八进制数
    printf("%c", '\130');//结果为x
    //因为130八进制转换为十进制为88,88对应的ASCLL码值就是x。具体见ASCLL码表
    //\xdd代表两个16进制数
    printf("%c", '\x35');//结果为0
    //35的十六进制转换成十进制为53,对应的ascll码为0;
    //但ASCll码值是有限的,注意大小
    return 0;
}
//例
int main()
{
    printf("%d\n", strlen("c:\tst\6287\test.c"));//判断字符串长度
    return 0;//结果为14
}

注释

在代码中又不需要的的代码可以删除,可以注释掉,在复杂的代码中注释添加说明来理解

注释的内容编译器当不存在,不影响代码。

注释的方式

直接代码后//+注释的内容,只注释//后的内容,换行后无

/*

* 注释内容

* 里面的内容都会被注释

*/

选择语句

一种分支局结构

if语句与switch语句

int main()
{
    int input = 0;
    printf("你要学习吗,选择1和0");
    scanf("%d", &input);
    if (input == 1)
    {
        printf("好好学习天天向上");
    }
    else
    {
        printf("感觉不如摆烂");
    }
    return 0;
    //if else 是一条语句,且有多种结构
}

循环语句

//while语句,DO while语句   for语句

int main()
{
    int line = 0;
    while (line<=2000)//判断写代码是否有2000行
    {
        printf("敲代码:%d行", line);
        line++;
        //添加break语句可以跳出循环
        //break;
    }
    return 0;
}

这里不作详细描述。只是介绍,后面深度学习

函数

c语言函数实现的是一个独立的功能。

如求两个数的和

int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    scanf("%d %d", &num1,&num2);
    sum=ADD(num1,num2);
    printf("%d", sum);
}
int ADD(int x, int y)
{
    int z = x + y;
    return z;
}

这个就是一个简单的函数

构成 函数类型+函数名(函数参数){函数实现的代码段}

相关文章
|
1月前
|
C语言 C++
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
15 0
|
2月前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]=&quot;hello&quot;`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。
|
2月前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。
131 7
|
2月前
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
520 6
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
2月前
|
C语言
C语言 字符串操作函数
本文档详细介绍了多个常用的字符串操作函数,包括 `strlen`、`strcpy`、`strncpy`、`strcat`、`strncat`、`strcmp`、`strncpy`、`sprintf`、`itoa`、`strchr`、`strspn`、`strcspn`、`strstr` 和 `strtok`。每个函数均提供了语法说明、参数解释、返回值描述及示例代码。此外,还给出了部分函数的自实现版本,帮助读者深入理解其工作原理。通过这些函数,可以轻松地进行字符串长度计算、复制、连接、比较等操作。
|
3月前
|
C语言
【C语言】字符串及其函数速览
【C语言】字符串及其函数速览
30 4
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
34 3
|
C# C语言 C++
从头开始学习c语言
以前的时候学习C语言时候认为C语言不过是一个学习的工具,学习一些理论知识就达到目的了,谁会用这么傻的语言啊,连个界面也没有,不像vb一下子就做出一个窗体来,放上几个按钮就可以了 后来学习C++的时候,认为C++与C是一种完全不同的语言,两者基本没有什么兼容性,当时在学校里看书的时候,一直比较纳闷为会c++的书上会写C++/C语言教程,到了现在才明白,我去C++与C本来就是一体是一脉相承的
1049 0