初识C语言

个人博客网址:https://ljsblog.com

初识C语言(一)

计算机语言就是人和计算交互的语言,而C语言是一门计算机语言。
计算机语言的发展

机器语言(二进制语言) → 汇编语言 → 高级语言(例如:C/C++/JAVA/python等)

第一个C语言程序

输出hello world

#include <stdio.h>//包含一个叫stdio.h的文件
int main()//主程序-程序入口-main函数有且只有一个
{
	//printf是打印函数,printf("要打印输出的内容")。
    printf("hello world\n");//打印hello world,\n为换行
    return 0;//程序正常退出
}

数据类型

char 字符数据类型
short 短整型
int 整型
long 长整型
long long (c99)更长整型
float 单精度浮点数(小数就是浮点数)
double 双精度浮点数

常用的打印类型

%d 打印十进制整型
%c 打印字符
%p 打印地址
%f 打印单精度浮点数
%lf 打印单精度浮点数
%x 打印16进制数字
%s 打印字符串

常量 变量

不变的值,C语言中用常量表示。
变的值,C语言中用变量表示。

变量分类

分为局部变量全局变量
局部变量:定义在代码块{}内部
全局变量:定义在代码块{}之外,全局变量不初始化,默认是0
例:

#include <stdio.h>
int n1=1;//全局变量
int main()
{
	int n2=2;//局部变量
	return 0;
}

  1. C语言语法规定,变量要定义在当前代码块的最前面
  2. 局部变量和全局变量名字尽量不相同
  3. 当局部变量和全局变量的名字相同时,局部变量优先
变量的作用域

作用域就是变量可以使用的范围

局部变量的作用域是变量所在的局部范围
全局变量的作用域是整个工程

变量的生命周期

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

局部变量:进入作用域生命周期开始,出作用域生命周期结束
全局变量:整个程序的生命周期

常量分类

字面常量,例:
3;
const修饰的常变量,(注:被const修饰的变量虽然有一些常量的属性,但本质还是变量)例:
const int num = 1;
#define 定义的标识符常量,例:
#define MAX 2
枚举常量,例:

enum color
{
  RED,//0
  YELLOW,//1
  BLUE//2
};

字符串

由双引号引起的一串字符称为字符串,例:

"asdsdfg"
""//空字符串

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

//strlen计算字符串长度,调用strlen需要包含<string.h>
//strlen计算字符串长度时遇'\0'结束,且'\0'不计入长度
#include <stdio.h>
#include <string.h>
int main()
{
	char ljs1[]="abc";
	//字符串后自动补'\0'
	//"abc" -- 'a' 'b' 'c' '\0'
	char ljs2[]={'a','b','c'};
	printf("%d\n",strlen(ljs1));//打印结果为3
	printf("%d\n",strlen(ljs2));//打印结果为随机值
}

#include <stdio.h>
#include <string.h>
int main()
{
	char liu1[]="abc";
	char liu2[]={'a','b','c','\0'};
	printf("%d\n",strlen(liu1));//打印结果为3
	printf("%d\n",strlen(liu2));//打印结果为3
}

转义字符

这里只列举了常用的

\n 换行
\’ 单引号字符
\" 双引号字符
\\ 反斜杠
\b 退格
\t 水平制表
\ddd 三位八进制
\xdd 二位十六进制

注释

  1. 不需要的代码可以删除,也可以选择注释掉
  2. 比较难懂的代码,可以加上注释,方便自己和他人理解代码
单行注释:
//  
多行注释:
/* 内容 */

注意:C语言不能嵌套注释

数组

一组相同类型元素的集合就是数组
数组定义

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

操作符

算术运算符
加(+)(-)(*)(/)	求余或称模运算(%)	自增(++)	自减(--)

关系运算符
大于(>)	小于(<)	等于(==)  大于等于(>=)  小于等于(<=)	不等于(!=)

逻辑运算符
与(&&)(||)(!)

位操作运算符
位与(&)  位或(|)  位非(~)  位异或(^)  左移(<<)  右移(>>)

赋值运算符 
简单赋值(=)  复合算术赋值(+=,-=,*=,/=,%=)  复合位运算赋值(&=,|=,^=,>>=,<<=)

指针运算符
取内容(*)	取地址(&)

求字节数运算符
sizeof

原码 反码 补码

只要是整数,内存中存储的都是二进制的补码
正数
原码 反码 补码相同
负数
原码(直接列出该数的二进制) -> 反码(符号位不变,其他位按位取反) -> 补码(反码+1)

关键字typedef

typedef就是给类型重命名,例:

typedef unsigned int uint;//将unsigned int重命名为uint
uint a=10;//等同于unsigned int a=10

关键字static

static修饰局部变量
局部变量声明周期变长
static修饰全局变量
改变变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就无法再使用
例:

#include <stdio.h>
int test()
{
	static int a=0;
	a++;
	printf("%d\n",a);
}
int main()
{
	int i=0;
	while(i<5)
	{
		test();
		i++;
	}
	return 0;
}
/*
1
1
1
1
1
*/

int a前加上static后

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

#define定义常量和宏

//定义标识符的一般形式为:#define 标识符 常量
#define MAX 1000
//宏定义
//1.定义没有参数的宏一般形式:#define 宏名称 替换文本
#define BUFFER_SIZE (4 * 512)
//2.#define 宏名称( [形参列表] ) 替换文本
#define ADD(x,y) ((x)+(y))

指针

内存:内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
用来存放地址的变量-指针变量

//例:
#include <stdio.h>
int main()
{
	int a = 5;
	int* p =&a;//&取地址,取a在内存中的地址
	printf("%p\n",&a);
	printf("%p\n",p);//取a的地址,打印出来结果一样
	*p=20;//*解引用操作符
	printf("%d\n",a);//打印出a为20
	return 0;
}

结构体

结构体:我们自己创造出的类型,里面可以包括整型,字符等

/*
结构体一般形式为:
struct 结构名
{成员列表};
*/
//例:
#include <stdio.h>
//创建结构体类型
struct student
{
	char name[20];
	int age;
};
int main()
{
	struct student stu1={"张三",19};//利用创建好的结构体类型创建结构体变量并初始化
	printf("名字:%s,年龄:%d\n",stu1.name,stu1.age);//打印成员
	return 0;
}
//利用指针变量打印成员
#include <stdio.h>
struct student
{
	char name[20];
	int age;
};
int main()
{
	struct student stu1={"张三",19};
	struct student* s=&stu1;
	//利用s打印学生姓名和年龄
	//结构体变量.成员
	//结构体指针->成员
	printf("名字:%s,年龄:%d\n",(*s).name,(*s).age);
	printf("名字:%s,年龄:%d\n",s->name,s->age);
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值