【C语言】基础语法

搞怪的不是红绿灯,不是时机,而是我数不清的犹豫。

前言 

  这是我自己学习C++的第一篇博客总结。后期我会继续把C++学习笔记开源至博客上。

编译和链接

相关概念

1. C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译链接器的链接,生成二进制的可执行文件,可执行文件才能执行

2. C语言代码是放在.c为后缀的文件中的,要得到最终运行的可执行程序,中间要经过编译链接两个过程。

3. 把.c为后缀的文件称为源文件,把.h为后缀的文件称为头文件

4. 每个源文件经过编译器处理生成对应的目标文件(.obj为后缀的文件)。

5. 多个目标文件库文件经过链接器处理生成对应的可执行程序(.exe为后缀的文件)。

基础函数

main()函数

相关概念

1. main()函数是程序的入口,即使⼀个项目中有多个.c文件,但是只能有⼀个main()函数

2. main()函数包含在标准输入输出库中。

示例

int main()
{
	return 0;
}

标准库函数

相关概念

1. 为了不再重复实现常见的代码,让程序员提升开发效率, C语言标准 规定了⼀组函数,这些函数再由不同的编译器⼚商根据标准进行实现,提供给程序员使用。

2. 使用前需要加上:#include <stdio.h>,引入标准输入输出库后,就可以使用里面的函数,有printf(),main(),scanf()等函数。

示例

#include <stdio.h>

printf()函数

占位符

1. 这里的%d%c等是占位符,会被后边的值替换

2. printf()后面的占位符与参数一一对应。

#include <stdio.h>
int main()
{
	printf("%s\n","hello");//打印字符串时,"%s"。
	printf("%c\n", 'h');//打印字符时,"%c"。
	printf("%d\n", 55);//打印整形时,"%d"。
	printf("%f\n", 55.5);//打印单精度浮点型时,"%f"。对应float
    printf("%lf\n", 55.5);//打印双精度浮点型时,"%lf"。对应double
	return 0;
}
/*
hello
h
55
55.500000
55.500000
*/

限制宽度

1. "%nf"n代表最小宽度如果宽度不足则空格补齐(如果宽度足够则无事发生),且默认右对齐(左边不够补空格)。

2. 浮点型小数点后默认6位

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	float a = 5.13;
	printf("%12f", a);//"%nf"中n代表最小宽度,默认右对齐(左边不够补空格)
	return 0;//小数点后默认6位
}
//    5.130000(4+2+6=12)

限定小数位数 

1. '%.f'限制小数点后n位

2. 限制小数位数可以和限制宽度一起使用。

#include <stdio.h>
int main()
{
 printf("Number is %.2f\n", 0.5);//%.nf限制小数点后n位
 return 0;
}
//Number is 0.50

scanf()函数

相关概念

1. 参数前面有&符号,传入的是变量地址而非值

2. 使用前需要加入宏定义#define _CRT_SECURE_NO_WARNINGS

3. scanf()在读取输入的内容时,如果遇到第一个空白(空格或者换行)时,就不再读取了。

示例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int score=0;
	scanf("%d", &score);
	printf("%d",score);
	return 0;
}

其他概念

关键字

1. C语言一共有32个关键字(不能自己单独定义)

2. https://zh.cppreference.com/w/c/keywordC语言关键字的官方文档)。

字符与ASCLL编码

1. ASCLL编码展示了:字符是怎样以二进制在电脑中进行储存的

2. A--65      a--97小写字符的ASCLL码更大,相差32)。     

3. 0-31号字符无法被打印出来。

4. ASCLL码一共有0-127号,一共128个

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	printf("%d\n", 81);//81
	printf("%c\n", 81);//Q
	return 0;
}

转义字符

1. \n :换行符

2. \0 :null字符,代表没有内容,用于字符串的结束标志,其ASCII码值是0

3. \ddd:ddd表示1-3个八进制数字。

4. \xdd:dd表示1-2个十六进制数字。

5. 转义字符官方文档:https://zh.cppreference.com/w/c/language/escape

字符串

1. 使用双引号括起来的⼀串字符就被称为字符串

2. 字符串的末尾隐藏放着⼀个'\0'字符,这个'\0'字符是字符串的结束标志。

3. 字符串的打印格式可以使用%s来指定,也可以直接打印

#include <stdio.h>
int main()
{
	printf("%s\n", "hello C");
	printf("hello C");
	return 0;
}
/*
hello C
hello C
*/

数据类型

数据类型的分类

内置类型

  1. 字符型 char
  2. 整形 int 
  3. 浮点型 float
  4. 布尔类型 bool (布尔类型的使用得包含头文件 <stdbool.h>)
整数溢出

1. 整形变量的范围是:-32768~32767

2. 当整形变量存储的数值超过了其所能表示的范围时,会从起点从新开始。 

3. 起点不一定是0,有可能是负数

4. 发生整数溢出时候,编译器不会报错

自定义类型

  1. 数组 arr
  2. 结构体 struct
  3. 枚举体 enum
  4. 联合体 union

数据类型的长度 

sizeof()操作符

1. sizeof()计算结果,单位是字节。(bit--Byte--KB--MB--GB)

2. sizeof()操作符不是独立的函数

3. sizeof()返回值类型是size_t,即无符号整形

4. sizeof()如果用来统计字符串长度,则会把'\0'统计进去

5. sizeof()中表达式不计算

6. sizeof()只关注内存空间大小,并不关注内存中存放的数据类型。

#include <stdio.h>
int main()
{
	printf("%zd\n", sizeof(long));
	printf("%zd\n", sizeof(3+5));
    printf("%zd", sizeof("hello world"));
	return 0;
}
/*
4
4
12
*/
#include <stdio.h>
int main()
{
	short s = 2;
	int b = 10;
	printf("%zd\n", sizeof(s = b + 1));//2
	printf("s = %d\n", s);//s = 2
	return 0;
}

strlen()函数

1. strlen()函数统计结束的标志是'\0'

2. strlen()函数如果用来统计字符串长度,则不会把'\0'统计进去

3. 由于一个字符就是一个字节,所以统计的就是字符串中字符的个数。

4. 需要引入<string.h>头文件

5. strlen()函数是专门用来计算字符串的大小的库函数。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main() 
{
    printf("%d\n", strlen("hello"));//5
    printf("%zd\n", sizeof("hello"));//6
    return 0;
}

强制类型转换 

1. 格式:(目标类型)变量;

2. 在强制类型转换会使得变量进行约值

#include <stdio.h>
int main()
{
	float a = 12.3;
	printf("%d", (int)a);//12
	return 0;
}

变量

变量的分类

1. 全局变量(i),全局变量是放在内存的静态区

2. 局部变量(a),局部变量是放在内存的栈区

3. 其实当局部变量和全局变量同名的时候,局部变量优先使用

#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i < 4; i++)
	{
		int a = 2;
		printf("%d\n", a);
	}
	return 0;
}
/* 
2
2
2
*/
#include <stdio.h>
int n = 1000;
int main()
{
	int n = 10;
	printf("%d\n",n);
	return 0;//10
}

变量的创建

1. 变量类型 变量名(字母, 数字,下划线))。

2. 字符字符串创建都用char

int a=1;
char a="nihao";//字符和字符串的初始化都用char

操作符

算术操作符

  1. (+    -    *)
  2.   ( / )  :若两端都是整数,则执行整数除法;若要求计算出小数,则必有一端是小数。          (小数点后默认6位)(如果是整数除法,则只会返回整数部分,丢弃小数部分
  3. (%):两端只能是整数,且符号与左端一致。
#include <stdio.h>
int main()
{
 float x = 6 / 4;
 int y = 6 / 4;
 printf("%f\n", x); // 输出 1.000000
 printf("%d\n", y); // 输出 1
 return 0;
}
#include <stdio.h>
int main()
{
 printf("%d\n", 11 % -5); // 1
 printf("%d\n",-11 % -5); // -1
 printf("%d\n",-11 % 5); // -1
 return 0;
}

复合赋值操作符

a+=4     -------    a=a+4
a*=2     -------    a=a*2      

单目操作符

1. (a++,a--),先使用再改变。

2. (++a,--a),先改变再使用。

#include <stdio.h>
int main()
{
	int a = 5;
	printf("%d\n", a++);
	a = 5;
	printf("%d\n", a--);
	a = 5;
	printf("%d\n", ++a);
	a = 5;
	printf("%d\n", --a);
	return 0;
}
/* 
5
5
6
4
*/

注释的使用

1. 编译时,注释会被替换成⼀个空格

2. 在一整个代码块前面最好用注释说明其功能,方便日后理解。

手动注释

1. 在行首加上//(只能一行)。

2. 在首尾加上/*    */(可以多行)。

	//char a = "hello";
	/*char b = "world";*/

自动注释

1. 用鼠标选择要操作的段落。

2. 注释:Ctrl+K+C

3. 取消注释:Ctrl+K+U

致谢 

  感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值