【C语言】入门了解

简介: 【C语言】入门了解

所以知识点到为止,不做详细介绍!


1数据类型



char                       字符数据类型
short                      短整型
int                        整形
long                       长整型
long long                  长长整形
float                      单精度浮点数
double                     双精度浮点数
C语言标准规定: sizeof(long long)> =sizeof(long)> =sizeof(int)


  1. %d-有符号整行整型(十进制)
  2. %c- 打印字符
  3. %f-打印浮点数字-打小数
  4. %p-以地址的形式打印
  5. %x-打印16进制数字
  6. %o--打印8进制
  7. %s-打印字符串
  8. %lf--打印double类型
  9. %u - 无符号整形 -unsigned


注意:存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。

比如:

char name[]   = 'xiaoming' ;

int weight = 120 ;

int age   = 20 ;


2. 变量、常量



生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)

有些值是可变的(比如:年龄,体重,薪资)。


2.1 定义变量的方法


1.int age = 150;
float weight = 45.5f;
cname = 'xiaoming';


2.2 变量的命名


  • 只能由字母(包括大写和小写)、数字和下划线( _ )组成。
  • 不能以数字开头。
  • 长度不能超过63个字符。
  • 变量名中区分大小写的。
  • 变量名不能使用关键字。


2.3 变量的分类


  • 局部变量
  • 全局变量
1.#include <stdio.h>
int a = 2023;//全局变量
int main()
{
    int b = 2023;//局部变量
    //下面定义的a会不会有问题?
    int a = 2020;//局部变量
    printf("a= %d\n",a );
    return 0;
}


上面的局部变量a变量的定义其实没有什么问题的!

当局部变量和全局变量同名的时候,局部变量优先使用!!


2.4 变量的作用域和生命周期


作用域

作用域( scope )是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效 / 可用

的而限定这个名字的可用性的代码范围就是这个名字的作用域。


1. 局部变量的作用域是变量所在的局部范围。就是在创造的{ }之内可以使用

2. 全局变量的作用域是整个工程。


生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

2. 全局变量的生命周期是:整个程序的生命周期。


2.5 常量


C语言中的常量和变量的定义的形式有所差异。

C语言中的常量分为以下以下几种:

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量


枚举常量

#include <stdio.h>
//举例
enum Sex
{
 MALE,
 FEMALE,
 SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
    //字面常量演示
    3.14;//字面常量
    1000;//字面常量
    //const 修饰的常变量
    //const修饰的常变量不能变
    const float a = 3.14f;   //这里的a是const修饰的常变量
    pai = 5.14;//是不能直接修改的!
    //#define的标识符常量 演示
 #define MAX 100
    printf("max = %d\n", MAX);
    //枚举常量演示
    printf("%d\n", MALE);
    return 0;
}


  • 那什么是常变量d0013180b61c47a1af12b9a4869e5182.png


 const 修饰的常变量在C语言中只是在语法层面限制了变量 num 不能直接被改变,但是 num 本质上还是一个变量的,所以叫常变量。


3. 字符串+转义字符+注释



3.1 字符串


"hello XMLife.\n"

这种由双引号( Double Quote )引起来的一串字符称为字符串字面值( String Literal ),或者简称字符

串。

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

#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
    char arr1[] = "XMLife";
    char arr2[] = {'x', 'm', };
    char arr3[] = {'x', 'm', '\0'};
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", arr3);
    return 0;
}


ed8c785f98484dc280358007d9425d77.png


字符串是遇到\0结束的

在arr1里面隐藏着一个\0所以打印了XM

在arr2里并不存在\0,xm后他会继续向后查找,直到遇到\0结束,所以arr2是个随机值

在arr3里,xm后面放着一个\0,所以遇见\0就会结束,打印了xm


4. 数组



数组是有序的元素序列。 [1]  若将有限个类型相同的变量的集合命名,那么这个名称为数组名


4.1 数组定义


int arr [ 10 ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }; // 定义一个整形数组,最多放 10 个元素


4.2 数组的下标


C语言规定:数组的每个元素都有一个下标

下标是从0开始的。 数组可以通过下标来访问的。

比如:

int arr [ 10 ] = { 0 };

// 如果数组 10 个元素,下标的范围是 0-9

ddd887c7aa624a7993978b38dd51ca7d.png


4.3 数组的使用


#include <stdio.h>
int main()
{
 int i = 0;
 int arr[10] = {1,2,3,4,5,6,7,8,9,10};
 int sz = sizeof(arr)/sizeof(arr[0]);//计算该数组有几个元素
 for(i=0; i<sz; i++)
 {
       printf("%d ", arr[i]);
 }
    return 0;
}


5. 指针



5.1 内存


内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是 1 个字节 。


为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该 内存单元的地址

d0597e280db14313aa90998e37092a5c.png


变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。

取出变量地址如下:

#include <stdio.h>
int main()
{
 int num = 10;
//把num的地址取出来
//这里num的4个字节,每个字节都有地址
//取出的是第一个字节的地址 (较小的地址)
 &num;
 //int* 是个指针变量
 //*是个指针
 //int 代表p指向的num是个int类型
 int* p = &num;
 printf("%p\n", &num);//打印地址,%p是以地址的形式打印
 printf(“%d\n”,*p);//打印*p指向的a
 return 0;
}

  • 那地址如何存储,需要定义指针变量。


int num = 10;

int *p;//p为一个整形指针变量

p = &num ;


指针的使用实例


#include <stdio.h>
int main()
{
 int num = 10;
 int *p = &num;
 *p = 20;
    return 0;
}


目录
相关文章
|
2月前
|
C语言
王桂林C语言从放弃到入门课程
课程目标16天,每天6节课,每节40分钟课堂实录,带你征服C语言,让所有学过和没有学过C语言的人,或是正准备学习C语言的人,找到学习C语言的不二法门。适用人群所有学过和没有学过C语言的人,或是正准备学习C语言的人!
26 2
王桂林C语言从放弃到入门课程
|
2月前
|
存储 编译器 C语言
初识C语言——详细入门(系统性学习day4)
初识C语言——详细入门(系统性学习day4)
|
2月前
|
存储 自然语言处理 编译器
C语言从入门到实战——编译和链接
在C语言中,编译和链接是将源代码转换为可执行文件的两个主要步骤。 编译过程包括以下步骤: 1. 预处理:将源代码中的预处理指令(如`#include`和`#define`)替换为实际的代码。 2. 编译:将预处理后的代码转换为汇编语言。 3. 汇编:将汇编语言转换为机器码指令。 链接过程包括以下步骤: 1. 目标文件生成:将每个源文件编译后生成的目标文件(`.o`或`.obj`)进行合并,生成一个总的目标文件。 2. 符号解析:查找并解析目标文件中的所有符号(例如全局变量和函数名),以确保每个符号都有一个唯一的地址。 3. 地址重定位:根据符号表中符号的地址信息,将目标文件中的所有地址引用
42 0
|
2月前
|
编译器 程序员 C语言
C语言从入门到实战——动态内存管理
在C语言中,动态内存管理是指程序运行时,通过调用特定的函数动态地分配和释放内存空间。动态内存管理允许程序在运行时根据实际需要来分配内存,避免了静态内存分配在编译时就确定固定大小的限制。
45 0
|
2月前
|
编译器 Linux PHP
C语言从入门到实战——预处理详解
C语言预处理是C语言编译过程的一个阶段,它在编译之前对源代码进行一系列的处理操作,包括宏替换、文件包含、条件编译等,最终生成经过预处理的代码,然后再进行编译。
47 0
|
2月前
|
存储 缓存 C语言
C语言从入门到实战——文件操作
C语言中的文件操作是通过使用文件指针来实现的。可以使用标准库中的函数来打开、读取、写入和关闭文件。
55 0
|
14天前
|
存储 自然语言处理 编译器
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
|
11天前
|
编译器 C语言
函数深入解析(C语言基础入门)
函数深入解析(C语言基础入门)
|
11天前
|
C语言
数组深入剖析(C语言基础入门)
数组深入剖析(C语言基础入门)
|
14天前
|
算法 C语言 芯片
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)