第一节 初识c语言

本文介绍了C语言的基本概念,包括数据类型如字符、整型、浮点型,变量的分类及作用域,常量的类型,字符串、转义字符和注释的使用。此外,还涵盖了选择语句、循环语句、函数、数组、操作符以及指针和结构体的初步知识。
摘要由CSDN通过智能技术生成

目录

1.什么是c语言

2.第一个c语言程序 

3.数据类型

 3.1数据类型大小

4.变量,常量

4.1变量的分类

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

4.3常量

字面常量:3.14,100,111 

const 修饰的常变量

#define 定义的标识符常量

枚举常量

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

 5.1字符串

 5.2转义字符

 5.3注释

6.选择语句

7.循环语句

8.函数

 9.数组

9.1数组定义

 9.2数组下标

 9.3数组的使用

 10.操作符

算术操作符

 移位操作符----移动的是二进制位

 位操作符--按2进制位操作

 赋值操作符

单目操作符--只有一个操作数 

 关系操作符

逻辑操作符 

条件操作符

 逗号表达式

 下标引用、函数调用和结构成员

11. 常见关键字

11.1 关键字 typedef 

11.2 关键字static

11.2.1 修饰局部变量

 11.2.2 修饰全局变量

 11.2.3 修饰函数

12. #define 定义常量和宏 

13.指针

13.1 内存

 13.2指针变量

 13.3 指针变量的大小

14. 结构体 

 14.1结构体初始化


1.什么是c语言

C语言是一门通用计算机编程语言,广泛应用于底层开发

C语言是一门面向过程的计算机编程语言

2.第一个c语言程序 

3.数据类型

char           //字符数据类型
short          //短整型

int              //整形

long            //长整型
long long     //更长的整形
float            //单精度浮点数

double        //双精度浮点数

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

C语言有没有字符串类型?

因为C语言是静态语言.在编译之前所分配的大小是确定的。而string的长度是不确定的,因此在编译前无法确定大小。但它提供了字符串常量.

 3.1数据类型大小

4.变量,常量

 C语言中用常量的概念来表示,变得值C语言中用变量来表示。

常量:性别 身份证号码 血型等

变量:年龄 体重 薪水

4.1变量的分类

局部变量和全局变量

 

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

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

作用域(scope),限定这个名字的可用性的代码范围就是这个名字的作用域.也就是代码发生作用的范围 

1. 局部变量的作用域是变量所在的局部范围,看{}大括号判断
2. 全局变量的作用域是整个工程

生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1.局部变量的生命周期是:进入作用域生命周期开始(进入大括号开始),出作用域生命周期结束(出去大括号)。
2. 全局变量的生命周期是:整个程序的生命周期

4.3常量

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

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量
  • 字面常量:3.14,100,111 

  • const 修饰的常变量

#define 定义的标识符常量

  • 枚举常量

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

 5.1字符串

"hello bit.\n"

这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。

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

\0的重要性 

 5.2转义字符

转义字符顾名思义就是转变意思。

 我们要在屏幕上打印一个目录:c:\code\test.c,这样写会这样,得加转义字符

 

 5.3注释

1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字

注释有两种风格:
C语言风格的注释  /*xxxxxx*/
缺陷:不能嵌套注释
C++风格的注释     //xxxxxxxx
可以注释一行也可以注释多行

6.选择语句

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

7.循环语句

//while循环的实例
#include <stdio.h>
int main()
{
    printf("加入比特\n");
    int line = 0;
    while(line<=20000)
    {
    line++;
    printf("我要继续努力敲代码\n");
    }
    if(line>20000)
    printf("赢取白富美\n");
    return 0;
}

8.函数

#include <stdio.h>
//函数
int Add(int x, int y)
{
	int z = x + y;
	return z;
}

int main()
{
	int num1 = 0; int num2 = 0;
	int sum = 0;
	printf("输入两个操作数:>");
	scanf("%d %d", &num1, &num2); sum = Add(num1, num2);
	printf("sum = %d\n", sum);
	return 0;
}

函数的特点就是简化代码,代码复用。

 9.数组

9.1数组定义

C语言中给了数组的定义:一组相同类型元素的集合

 9.2数组下标

C语言规定数组的每个元素都有一个下标,下标是从0开始的。

数组可以通过下标来访问的。

int main()
{
	int arr[10] = { 0 };
	//如果数组10个元素,下标的范围是0-9
	return 0;
}

 9.3数组的使用

#include <stdio.h>
int main()
{
	int i = 0; int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; 
	//通过for循环来遍历
	for (i = 0; i < 10; i++) 
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;
}

 10.操作符

算术操作符

+   -   *   /   %

 

 移位操作符----移动的是二进制位

>>  << 

 

 位操作符--按2进制位操作

&--按位与--相同为1   

^--按位异或--不同为1   

|--按位或--有1便是1 

 赋值操作符

=   +=  -=  *=  /=  &=   ^=   |=   >>=    <<=

单目操作符--只有一个操作数 

 !           逻辑反操作--非0就是真 0位假
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符)
(类型)       强制类型转换

 关系操作符

>
>=
<
<=
!=      用于测试“不相等”
==      用于测试“相等”

逻辑操作符 

&&       逻辑与
||          逻辑或

条件操作符

 exp1 ? exp2 : exp3

 逗号表达式

exp1, exp2, exp3, …expN

 下标引用、函数调用和结构成员

[]  ()  .   ->

11. 常见关键字

11.1 关键字 typedef 

 typedef 顾名思义是类型定义,这里应该理解为类型重命名。

//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
	//观察num1和num2,这两个变量的类型是一样的
	unsigned int num1 = 0;
	uint_32 num2 = 0;
	return 0;
}

11.2 关键字static

在C语言中:
static是用来修饰变量和函数的

1. 修饰局部变量-静态局部变量
2. 修饰全局变量-静态全局变量
3. 修饰函数-静态函数

11.2.1 修饰局部变量

结论:
static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

 11.2.2 修饰全局变量

//代码
//add.c--源文件
static int g_val = 2018;

//test.c--另一个源文件
int main()
{ 
    extern int g_val;//得声明extern 
    printf("%d\n", g_val);
    return 0;
}

在编译的时候会出现连接性错误。

结论:
一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用, 不能在其他源文件内使用。

 11.2.3 修饰函数

//add.c
static int Add(int x, int y)
{
    return c+y;
}


//test.c
int main()
{
    extern int Add(int x, int y);
    printf("%d\n", Add(2, 3));
    return 0;
}

在编译的时候会出现连接性错误.

结论:
一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

12. #define 定义常量和宏 

//define定义标识符常量
#define MAX 1000
        //MAX=1000

//define定义宏
#define ADD(x, y) ((x)+(y)) 
        //ADD(x, y)=((x)+(y)) 

13.指针

13.1 内存

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


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


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

 变量都有地址,取出变量地址如下:

 取出的是第一个字节的地址(较小的地址)--0x0012ff44

 13.2指针变量

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

int num = 10;
int *p;//p为一个整形指针变量
p = &num;

 

 13.3 指针变量的大小

#include <stdio.h>
int main()
{
	printf("%d\n", sizeof(char*)); //8
	printf("%d\n", sizeof(short*)); //8
	printf("%d\n", sizeof(int*)); //8
	printf("%d\n", sizeof(double*));//8
	return 0;
}

结论:指针大小在32位平台是4个字节,64位平台是8个字节。

14. 结构体 

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。

比如描述学生,学生包含:名字+年龄+性别+学号这几项信息。
这里只能使用结构体来描述了。

struct Stu
{
    char name[20];//名字
    int age;      //年龄 
    char sex[5];  //性别
    char id[15]; //学号
};

 14.1结构体初始化

//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};

//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);

//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值