C语言程序员培养历程,程序员成长之旅——初识c语言(浅谈)

程序员成长之旅——初识c语言(浅谈)

c语言是什么?

第一个c语言程序

数据类型

变量常量

变量的定义

变量的分类

变量的使用

变量的作用域和生命周期

常量

字符串+转义字符+注释

字符串

转义字符

注释

选择语句

循环语句

函数

数组

数组的定义

数组的使用

操作符

常见关键字

关键字 typedef

关键字 static

修饰局部变量

修饰全局变量

修饰函数

#define定义常量和宏

指针

指针变量的大小

结构体

c语言是什么?

C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

第一个c语言程序

#include

int main()

{

printf("hello\n");

return 0;

}

数据类型

char //字符数据类型

short //短整型

int //整形

long //长整型

long long //更长的整形

float //单精度浮点数

double //双精度浮点数

变量常量

一般普通变量:如123,3.5,“abc”, ‘a’ 很容易识别以变量形式展现的,要看标识符的定义形式,才能确定该标识符是常量,还是变量,如:const int a=5 ; //常量 有const修饰,变量不能修改int b=34; //变量#define 定义的宏,即不是常量也不是变量

变量的定义

int age=50;

float weight=45f;

char ch='d';

变量的分类

局部变量

全局变量

#include

int global=2019;//全局变量

int main()

{

int local=2018;//局部变量

//下面定义的global会不会有问题

int global=2020;//局部变量

printf("global = %d\n", global);

return 0;

}

5c7060bc2325a32e4cf143b0ec676030.png

总结:上面代码是没有任何问题的,当局部变量和全局变量相遇时优先局部变量。

变量的使用

9d2df77b2016a8d93e009e41dfd2148b.png

变量的作用域和生命周期

作用域

作用域(score)程序设计概念,一段程序代码中所用到的名字并不总是有效的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

局部变量的作用域是变量所在的局部范围。

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

生命周期

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

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

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

常量

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

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

字面常量

const修饰的常变量

#define定义的标识符常量

枚举常量

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

enum Sex

{

MALE,//枚举常量

FEMALE,

SECRET

};

int main()

{

3.14;//字面常量

1000;//字面常量

const float pai = 3.14f; //const 修饰的常量

pai = 5.14;//ok?

#define MAX 100//#define的标识符常量

system("pause");

return 0;

}

字符串+转义字符+注释

字符串

"hello \n"

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

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

转义字符

8a17b590cbd4842d9ba2a303a8c53e11.png

d37b34fad9752324e54dfe68cd2dfaad.pngb6d5faee22c72e236f1ca30a98bc98e5.png

378804f8d7cfdffc2597b9db54d27407.png

注释

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

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

比如:

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

int Add(int x, int y)

{

return x + y;

}

/*C语言风格注释//不能嵌套注释

int Sub(int x, int y)

{

return x-y;

}

*/

int main()

{

//C++注释风格//可以注释一行也可以注释多行

//int a = 10;

//调用Add函数,完成加法

printf("%d\n", Add(1, 2));

return 0;

}

选择语句

C语言条件控制语句选择结构,是属于计算机的语言编辑,有在C语言条件控制中的语句选择结构的存在,即是C语言条件控制语句选择结构。

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

int main()

{

int coding = 0;

printf("你会去敲代码吗?(选择1 or 0):>");

scanf("%d", &coding);

if (coding == 1)

{

printf("坚持,你会有好offer\n");

}

else

{

printf("放弃,回家卖红薯\n");

}

system("pause");

return 0;

}

循环语句

C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

int mian()

{

printf("作为一个程序员");

int line = 0;

while (line <= 20000)

{

line++;

printf("我要继续努力敲代码\n");

}

if (line> 20000)

printf("赢取白富美\n");

system("pause");

return 0;

}

函数

#define _CRT_SECURE_NO_WARNINGS 1

#include

int main()

{

int num1 = 0;

int num2 = 0;

int sum = 0;

printf("输入两个操作数:>");

scanf("%d %d", &num1, &num2);

sum = num1 + num2;

printf("sum = %d\n", sum);

return 0;

}

函数的特点就是简化代码,上述代码写成函数如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

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

system("pause");

return 0;

}

数组

所谓数组,是有序的元素序列。

[1]

若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。

[2]

这些无序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。

数组的定义

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

数组的使用

#define _CRT_SECURE_NO_WARNINGS 1

#include

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]);

}

printf("\n");

return 0;

}

操作符

指令系统的每一条指令都有一个操作符,它表示该指令应进行什么性质的操作。

算数操作符

+ - * / %

移位操作符

>> <<

位操作符

& ^ |

赋值操作符

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

单目操作符

! 逻辑反操作

- 负值

+ 正值

& 取地址

sizeof 操作数的类型长度(以字节为单位)

~ 对一个数的二进制按位取反

-- 前置 后置--

++ 前置 后置++

* 间接访问操作符

(类型) 强制类型转换

关系操作符

> >= < <= != ==

逻辑操作符

&& 逻辑与

|| 逻辑或

条件操作符

exp1 ? exp2 : exp3

逗号表达式

exp1,exp2,exp3, ...... expN

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

[] () . ->

常见关键字

auto break case char const continue default do double else enum extern

float for goto if int long register return short signed sizeof static

struct switch typedef union unsigned void volatile while

关键字 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;

}

关键字 static

在c语言中:

static 是用来修饰变量和函数的

修饰局部变量

修饰全局变量

修饰函数

修饰局部变量

10c40a737af781f8755386ff274397e0.png

25a6cc5b9abb586077fc9bdbc87cfe42.png

对比上面两个代码可以发现当static修饰局部变量时,它改变了变量的生命周期,让静态局部变量除了作用域依然存在,到程序结束,生命周期才结束。

修饰全局变量

//代码1

int g_val = 2018;

//test.c

int main()

{

printf("%d\n", g_val);

return 0;

}

//代码2

//add.c

static int g_val = 2018;

//test.c

int main()

{

printf("%d\n", g_val);

return 0;

}

对比可知,代码1正常,代码2会出现连结性错误。由此可知,一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件使用。

修饰函数

//代码1

//add.c

int Add(int x, int y)

{

return c + y;

}

//test.c

int main()

{

printf("%d\n", Add(2, 3));

return 0;

}

//代码2

//add.c

static int Add(int x, int y)

{

return c + y;

}

//test.c

int main()

{

printf("%d\n", Add(2, 3));

return 0;

}

代码1正常,代码2错误。由此可知一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

#define定义常量和宏

d40e2ed190a6cfc2817de5ad172d543d.png

指针

内存

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

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

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

1d254e0ea12a8fe4728a4873932438e6.png

指针的使用条例

#include

int main()

{

int num = 10;

int* p = &num;

*p = 20;

return 0;

}

以整形指针为例,可以推广到其他类型,如:

#include

int main()

{

char ch = 'w';

char* pc = &ch;

*pc = 'q';

printf("%c\n", ch);

return 0;

}

指针变量的大小

#include

int main()

{

printf("%d\n", sizeof(char*));

printf("%d\n", sizeof(short*));

printf("%d\n", sizeof(int*));

printf("%d\n", sizeof(double*));

return 0;

}

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

结构体

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

比如描述学生,学生包含: 名字 + 年龄 + 性别 + 学号 这几项信息。

这里只能使用结构体来描述了。

例如:

struct Stu

{

char name[20];//名字

int age; //年龄

char sex[5]; //性别

char id[15]; //学号

};

结构体的初始化:

//打印结构体信息

struct Stu s = { "张三", 20, "男", "20180101" };

//.为结构成员访问操作符

printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值