看的懂的C语言--字符串、转义字符、注释

一、字符串

1、字符串是什么?

"hello world\n"

顾名思义,从“字符串”三个字看,它就是字符的组合

字符串或串(String)是由数字、字母、下划线组成的一串字符。

或许学过C++、Java、python等语言的人知道string(字符串类型),但C语言中字符串是存放在数组中的。

暂时就先说一种,复杂的以后再说。


2、字符串的定义

通过字符数组进行初始化

#include <stdio.h>
int main()
{
	//第一种,在双引号中写
    char arr1[] = "hello";
    //第二种,在花括号中用单引号分成单个字符
    char arr2[] = {'h','e','l','l','o','\0'};
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;
}

3、注意事项

错误的写法

#include <stdio.h>
int main()
{
	//错误的写法,arr是数组的首元素的首地址,不能将字符存在里面
    char arr[5];
    arr = "hello";
    printf("%s\n", arr);
    return 0;
 }

4、转义字符’\0’的使用

字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

char arr2[] = {‘h’,‘e’,‘l’,‘l’,‘o’,‘\0’};

#include <stdio.h>
int main()
{
	//双引号中的字符串最后默认有'\0'
    char arr1[] = "hello";
    //在花括号中用单引号分成单个字符必须在后面加个'\0'来表示结束
    char arr2[] = {'h','e','l','l','o','\0'};
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;
}

二、转义字符

转义字符(Escape character),所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

通俗来说就是转变字符的含义,前面加个’\'就能表示出许多键盘上不能打的字符。

该处是未加’\'的n

#include <stdio.h>
int main()
{
	printf("abc");
	return 0;
}

在这里插入图片描述


该处n的前面加了’\',结果n并没有被输出,而且abc下面空了一行,这就是用‘\’把n转成了换行符。


#include <stdio.h>
int main()
{
	printf("abc\n");
	return 0;
}

在这里插入图片描述


转义字符表

转义字符释义ASCII(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符’\’092
\’代表一个单引号字符 ’039
\"代表一个双引号字符"034
\?代表一个问号?063
\0空字符(NUL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\xhh十六进制所代表的任意字符十六进制

现学现用,笔试题

该程序会输出什么?(函数strlen是用来求字符串长度的。)

//程序输出什么?
#include <stdio.h>
int main()
{
    printf("%d\n", strlen("abcdef"));
    printf("%d\n", strlen("c:\test\106\test.c"));
    return 0;
}

在这里插入图片描述
很多人第一个肯定是做对了,但是第二个就不一定了;
首先我们得记住一些重要的转义字符,在这个字符串"c:\test \106 \test.c"中\t、\106是转义字符看作一个字符,因此我们就能数出来了。


三、注释

注释是啥意思?

注释是对程序的某个功能或者某行代码的解释说明,它只在C语言源文件中有效,在编译时会被编译器忽略。

注释有两个目的:

1、为了使代码易于阅读,通常会在实现功能的同时为代码加一些注释。
2、 代码中有不需要的代码可以直接删除,也可以注释掉

并且注释风格有两种:
1、C语言: /* …*/
2、C++语言: //…(推荐使用)

#include <stdio.h>
int Add(int x, int y)
{
    return x+y;
}
/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/
int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法
    printf("%d\n", Add(1, 2));
    return 0;
}

注意:当需要注释掉一大段程序的时候,仍用这个注释符( //)好不好呢?

如果那段要注释的程序中已经有地方用这个注释符注释过的话,那么再这样注释就可能会出问题有些编译器在检测到“/”会寻找最近的“/”与其结合,

也就是说想注释一大段的时候,但是里面已经有注释了,那么此时就会出错。

所以不推荐使用 / * … * /

#include <stdio.h>
int main()
{	
/*

	int a = 17;
	/*printf("%d",a);*/
	
*/  //这里就出问题了
	return 0;
}
  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值