C语言学习笔记(二)
(一)字符串和字符
1.字符串:
这种由双引号引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。(注意:字符串后面天然带有一个\0,
在计算字符串长度的时候 \0 是结束标志,不算作字符串内容)。比如“abc”,后面其实隐藏了一个\0.
2.字符:
字符一般由单引号引出。比如'a','b','c'
3.打印字符串以及字符
结果如图。为什么第一个会直接输出abc,第二个除了abc外,后面还有乱码呢?
因为,在字符串“abc”中,其后面天然有\0(虽然藏起来了,但就是有),作为计算字符串长度的终止符,其本身不计入长度。但是在arr2里面,只有字符,没有\0,所以电脑没有检测到终止符,就会一直输出后面的随机值,也就出现了乱码。
所以,要想让arr2也打印成abc,可以这样写:
4.字符串长度的计算
引出一个新函数:strlen函数,用于计算长度。strlen=string length,在使用之前,要在前面声明#include<string.h>
因为第二个字符构成的集合中,没有\0,随意会继续计算随机数值,直到出现\0才会停止。这里的15,表示第16位有\0.
加上\0之后,计算机停止计算。
(二)转义字符
这里重点讲解一下\ddd和\xdd两种转义字符
\ddd:ddd指的是1-3个8进制数字
比如说:如果打印\32,后面3和2是两个八进制数字。换成十进制是:3*8^1+2*8^0=26,则对应到ASCII码表所对应的字符,然后输出。
在计算长度时,\32记一个单位长度即可。
但是要注意,八进制中只有0-7,如果出现了8,那么不符合语法规矩,不构成转义字符,比如\382,直接输出\382。计算长度记4个单位。
\xdd:dd表示两个十六进制的数字
比如\x61,转换成十进制就是:6*16^1+1*16^0=97,输出ASCII对应的值
一道题目:计算字符串“c:\test\328\test.c”
(三)注释语句
注释有两种风格:
C语言风格的注释 /*xxxxxx*/
缺陷:不能嵌套注释
C++风格的注释 //xxxxxxxx
可以注释一行也可以注释多行
(四)选择语句和循环语句
1.选择语句:
写成代码:涉及scanf语句和if语句
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int input=0;
printf("你考上了大学\n");
printf("大学四年中是否要好好学习呢?(1/0)>:");//>:代表提示符,要在后面输入一个数字
scanf("%d",&input);
if(input==1)//if语句后面不用跟冒号哦,如果带了冒号,那后面的else就无法识别这个if了
printf("好offer\n");
else//两个都带冒号也不行哦
printf("卖红薯\n");
return 0;
}
输出结果如下:
循环语句:
代码如下:这里引入while和if语句。如果line值小于20000,则进入上一个循环,大于20000,进入下一个。
(五)函数
我们以一个简单的加法代码为例:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a=0;
int b=0;
int sum=0;
printf("请输入两个数字,电脑会将他们求和");
scanf("%d%d",&a,&b);
sum=a+b;
printf("sum=%d\n",sum);
return 0;
}
这样可以运行,但是还有另外一种写法:先将加法函数封装起来,独立于主函数之外。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int Add(int x,int y)//自定义一个加法函数,里面有整形Z和整形Y,将其封装起来,独立于主函数之外。
{
int z=x+y;
return z;
}
int main()//主函数部分和原来的写法类似
{
int a=0;
int b=0;
int sum=0;
printf("请输入两个数字\n");
scanf("%d%d",&a,&b);
sum=Add(a,b);
printf("sum=%d\n",sum);
return 0;
}
运行结果如下:
(六)数组
C语言中给了数组的定义:一组相同类型元素的集合。
int arr = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素。
文档来源:51CTO技术博客https://blog.51cto.com/u_15294666/3017678
页:
[1]