C语言基础知识

简介: C语言基础知识

编译和链接

相关概念


1. C语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件,⽂本⽂件本⾝⽆法执⾏,必须通过编译器翻译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏。


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


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


4. 每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件)。


5. 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)。


基础函数

main()函数

相关概念

1. main()函数是程序的⼊⼝,即使⼀个项⽬中有多个.c⽂件,但是只能有⼀个main()函数。

2. main()函数包含在标准输入输出库中,使用前需要引入<stdio.h>头文件。


示例

int main()
{
  return 0;
}


标准库函数

相关概念

1. 引入标准输入输出库后,就可以使用里面的函数,有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;
}

限制宽度

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


限定小数位数

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


scanf()函数

相关概念

1. 参数前面有 & 符号。


2. 占位符是什么格式,后面输入时格式要求和占位符相同。(不要用\n!!!)


3. 使用前需要加入宏定义:#define _CRT_SECURE_NO_WARNINGS。(否则报错!)


4. 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. 在C99标准中加⼊了 inline 、 restrict 、_Bool 、_Complex 、 _Imaginary 等关键字。


3. https://zh.cppreference.com/w/c/keyword(C语⾔关键字的全部介绍)


字符与ASCLL编码

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

2. A--65      a--97(小写字符的ASCLL码更大)。    

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;
}

数据类型

数据类型的分类

内置类型

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


整形 int

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

2. 整形变量在计算机中以二进制储存,但是为了使用可以表示成其他进制。

3. 八进制:0开头(010)

4. 十六进制:0X开头(0X10)


整数溢出

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

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

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


自定义类型

  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()中表达式不计算。

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

strlen()函数

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

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

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

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


#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;
}
#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;
}

注释的使用

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

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

手动注释

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

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

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

自动注释

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

2.注释:Ctrl+k+c

3.取消注释:Ctrl+k+u


致谢

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

相关文章
|
程序员 编译器 C语言
初识C语言——C语言基础知识(一)
初识C语言——C语言基础知识(一)
75 0
初识C语言——C语言基础知识(一)
|
C语言
【C语言入门】
【C语言入门】
90 0
|
C语言
入门学习C语言的一些建议
入门学习C语言的一些建议
|
6月前
|
存储 Web App开发 算法
c语言的简单入门
熟悉c语言(简单入门)
|
6月前
|
存储 程序员 Go
|
编译器 C语言 iOS开发
C语言基本知识(建议收藏)
C语言基本知识(建议收藏)
104 0
|
7月前
|
存储 缓存 编译器
C语言:基础知识
C语言:基础知识
129 0
|
7月前
|
编译器 开发工具 C语言
C/C++入门002-C语言组成
C/C++入门002-C语言组成
|
7月前
|
存储 安全 编译器
从C语言到C++:C++入门知识(2)
从C语言到C++:C++入门知识(2)
69 0
|
存储 编译器 C语言
初识C语言——C语言基础知识(四)
初识C语言——C语言基础知识(四)
55 0