初始C语言(中)

简介: 初始C语言(中)

一、字符串+转义字符+注释


1、字符串


C语言不同于Java,C是没有字符串的,也就是说我们不能直接定义一个变量为字符串类型(String)。在C中只能用这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。


例:"Hello word"


那么我们如何判断这个字符串的大小呢,在啥时候计算机才能认为字符串结束了呢?字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。


做个简单的案例:判断每个数组的大小


#include <stdio.h>
int main()
{
    char arr1[] = "bit";
    char arr2[] = {'b', 'i', 't'};
    //char 字符型,由''括起来的,键盘上任意一个字符、数字都是字符型
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;
}
数据arr2结尾没有\0,所以这个无法判断数组大小,是个未知数


2.转义字符


上述的的 \0就是一个转义字符,转义字符简单来说就是改变了原来字符的意思

常见的转义字符如下:


转义字符 释意
\?

在书写连续多个问号时使用,防止他们被解析成三字母词

\'

用于表示字符常量'

\"

用于表示一个字符串内部的双引号

\\

用于表示一个反斜杠,防止它被解释为一个转义序列符

\a

警告字符,蜂鸣

\b

退格符

\f

进纸符

\n 换行
\r 回车
\t

水平制表符

\v

垂直制表符

\ddd

ddd表示1~3个八进制的数字。 如:\130 X

\xdd

dd表示2个十六进制数字。 如:\x30 0


3:注释


1. 代码中有不需要的代码可以直接删除,也可以注释掉

2. 代码中有些代码比较难懂,可以加一下注释文字

曾经有个快要毕业的大牛在答辩前夕看了一眼自己的代码,没有注释。答辩时,突然看不懂自己写了啥。可见注释的重要性。

一般的注释有两种

1./*

  注释的代码

  */   这种叫做多行注释

2.//这中叫做单行注释


二:选择语句


#include <stdio.h>
int main()
{
 int coding = 0;
    printf("你会去敲代码吗?(选择1 or 0):>");
    scanf("%d", &coding);
    if(coding == 1)
   {
       prinf("坚持,你会有好offer\n");
   }
    else
   {
       printf("放弃,回家卖红薯\n");
   }
    return 0;
}


这里的if-else就是一个选择语句

三:循环语句

#include <stdio.h>
int main()
{
    int i=0;
    while(i>1000)
{
    printf("我是猪");
}
    return 0; 
}


当然了,我们的循环语句,绝不止这些。

还有do-while,for循环,这些以后再细聊。


四:函数


和数学一样,函数一个学习重点。这里的函数不同于数学的函数。


我们之前提到过的main函数就是个最基本的函数。


函数(Function)是一段可重复的代码,这样给我们省去了很多麻烦简化了代码,也增加了代码的可读性和复用性。


我们所写的每一个函数都必须要有返回类型(可以是任意类型),函数名称(自定义名称),参数列表(无参或者多个参数)。


例:

int main()//int 为返回类型,main为函数名,()无参列表
{
    return 0;
}//return是int的返回值
void add()//这里是void无返回值,所以不需要return
{
}


当然,跟加细节的内容以后会在聊。


五:数组


c语言中的定义:一组类型相同的元素的集合


先前也提到过了一下下数组,这里来简单认识一下。

要创建一个数组首先要确定数据类型如:int,char,double,long等等

然后就是自定义一个数组名如:arr

后面再加上一个[]        再进行初始化

例如

int arr[]={4,5,6};/这里没有确定arr有多少个元素,但我们初始化以后可以知道有三个元素
//这种写法是正确的
int arr[5]={0};
//这种写法也是正确的,定义了五个元素,初始化全为0
int arr[5]={6,7,8};
//这样确定了有五个元素,前三个为6,7,8后面两个为0

最后一个例子画图说明:

6 7 8 0 0

数组是有序地存放元素的,因为后面两个元素没有存放数据,所以我们认为它是0。


而中间的示例:我们一个都没有初始化,所以全为0

0 0 0 0 0

而正是因为我们的数组是有序的存放元素,那么我们便可以去按顺序访问数组。

我们数组下标一般是从0开始的,下标是我们对每一个元素的编号。

#include <stdio.h>
int main()
{
     int i = 0;
     int arr[10] = {1,2,3,4,5,6,7,8,9,10};
     for(i=0; i<10; i++)
 {
          printf("%d ", arr[i]);//一般是通过arr[i]去访问每一个元素的
 }
      return 0; 
}    
//结果为:1 2 3 4 5 6 7 8 9 10


上例是一般的遍历情况。遍历:简单的说就是吧数组arr全部访问一遍

剩下的在很多内容下一篇我会全部结束!

相关文章
|
10月前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
3月前
|
Prometheus 监控 Cloud Native
Grafana完整教程
本文介绍了Grafana与Prometheus的安装与配置流程,涵盖源配置、端口设置、服务端与客户端安装、Node Exporter部署及自启动设置,同时提供多服务器监控方案与推荐Dashboard。
Grafana完整教程
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
425 2
基于Redis的高可用分布式锁——RedLock
|
11月前
|
网络协议 数据库 网络架构
OSPF邻居关系建立过程详解
OSPF邻居关系建立过程详解
791 6
|
SQL 存储 JSON
AlaSQL.js:用SQL解锁JavaScript数据操作的魔法
AlaSQL.js:用SQL解锁JavaScript数据操作的魔法
263 1
|
12月前
|
存储 算法
算法的时间复杂度和空间复杂度
本文详细讨论了算法的时间复杂度和空间复杂度,包括它们的概念、计算方法和常见复杂度的对比,并通过多个实例解释了如何计算算法的时间和空间复杂度。
765 0
算法的时间复杂度和空间复杂度
|
存储 机器学习/深度学习 安全
|
Java
Jstack 查看线程状态及定位占用 cpu 较高的 java 线程
Jstack 查看线程状态及定位占用 cpu 较高的 java 线程
1219 2
|
数据安全/隐私保护
BurpSuite2021 -- Intruder模块
BurpSuite2021 -- Intruder模块
391 2
|
存储 安全 JavaScript
XSS--概念、类型、实战--分析与详解[pikachu]
XSS--概念、类型、实战--分析与详解[pikachu]