栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

初识C语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初识C语言

初识C语言

C数据类型变量常量

变量的分类变量的作用域和生命周期常量 字符串

转义字符 注释选择语句循环语句函数数组操作符

算术操作符: + - * / %移位操作符: >> <<位操作符:赋值操作符单目操作符

~ 按(二进制)位取法++ - - 关系操作符逻辑操作符条件操作符(三目操作符)逗号表达式下标引用,函数调用和结构成员 关键字

关键字typedef关键字static #define定义常量和宏指针

指针变量的大小 结构体

C数据类型

char //字符数据类型 1字节
short //短整型 2字节
int //整型 4字节
long //长整型 4字节
long long //更长的整型 8字节
float //单精度浮点类数 4字节
double //双精度浮点数 8字节

#include 
int main() {

	printf("%d/n", sizeof(char));//打印一个整数 -%d
	printf("%d/n", sizeof(short));//sizeof -关键字--操作符-计算类型或者变量所占空间的大小
	printf("%d/n", sizeof(int));
	printf("%d/n", sizeof(long));
	printf("%d/n", sizeof(long long));
	printf("%d/n", sizeof(float));
	printf("%d/n", sizeof(double));

	return 0;
}


变量常量

常量 - 不能改变的量
变量 - 能被改变的量

变量的分类

局部变量:{}内部定义的
全局变量:{}外部定义的

#define  _CRT_SECURE_NO_WARNINGS 1
#include 
int a = 100;//全局变量
int main()
{
	int a = 10;//局部变量
	//当局部变量和全局变量名字冲突情况下,局部优先
	printf("%dn", a);
	return 0;

计算两个数的和

//scanf函数是输入函数
int main()
{
	int a = 0;
	int b = 0;
	int sum = 0;
	scanf("%d%d", &a, &b);
	sum = a + b;
	printf("sum = %dn", sum);

	return 0;
}
变量的作用域和生命周期

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

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

#include 

int g_val = 2021;//全局变量
int  main()
{
	printf("1:%dn", g_val);
	printf("hehen");
	{
		printf("2:%dn", g_val);
		int a = 10;
	    printf("a = %dn,a");
	}
	printf("3%dn", g_val);
	return 0;
}

生命周期
变量的生命周期:变量的创建和销毁之间的时间段
局部变量的生命周期:进入局 部范围生命开始,出局部范围生命结束
全局变量的生命周期:程序的生命周期

常量

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

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

#include 
int main()
{
	//1.字面常量
	3.14;
	10;
	'a';
	"abcdef";
	//2.const修饰的常变量
	const int num = 10;//num常变量-具有常属性(不能被改变的属性)

	printf("num = %dn",num);//20
	return 0;
}
#define MAX 10000//3.#define定义的标识符常量
int main()
{
	int n = MAX;
	printf("n = %dn,n");
	return 0;
}
字符串

就是一串字符,由双引号引起的就是字符串

	"abcdef";
	"hello nathan";

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

int main()
{
	//字符数组 - 数组是一组相同类型的元素
	//字符串在结尾的位置隐藏了一个的字符
	//是字符串的结束标志
	char arr[] = "hello";
	return 0;
}
转义字符

转变了它原来的意思

注释
    代码中有不需要的代码可以直接删除,也可以注释掉代码中有些比较难懂,可以加一下注释文字
int main()
{
   //int a =10;//c++注释风格
    //c语言注释风格
   return 0;
}
选择语句
int main()
{
	int input = 0;
	printf("加入学习");
	printf("那么好好学习(1/0)?>:");
	scanf("%d", &input);
	if (input == 1)

		printf("好好学习,好offern");
	else
		printf("卖红薯n");

			return 0;

	
}
循环语句
int main()
{
	int line = 0;
	while (line < 30000)
	{
		printf("写代码:%dn",line);
		line++;
	}
	if (line == 30000)
	{
		printf("好offern");
	}
	return 0;
}
函数
int Add(int x,int y)
{
	int z = 0;
	z = x + y;
	return z;
}
int main()
{
	int num1 = 0;
	int num2 = 0;
	scanf("%d%d", &num1, &num2);
	//int sum =num1 + num2;
	//函数的方式解决
	int sum = Add(num1, num2);
	printf("%dn", sum);
	return 0;

}
数组

数组 ----- 一组相同类型的元素的集合

int main()
{
	//10个整形1-10存起来
	//数组是用下标访问
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	while (i<10)
	{
		printf("%d", arr[i]);
		i++;
	}
	char ch[5] = { 'a','b','c' };//不完全初始化,剩余的默认为0
return 0;
}
操作符 算术操作符: + - * / %
int main() 
{
	int a = 9 / 2;//结果为4
	float a = 9 / 2.0;//结果为4.5
	printf("%fn", a);

	return 0;

}
移位操作符: >> <<

<< 左移操作符—移动的是二进制位

位操作符:

&(按位与) |(按位或) ^(按位异或)

赋值操作符

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

单目操作符

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

~ 按(二进制)位取法

把所有二进制位中的数字,1变成0,0变成1
整数在内存中存储的是补码~
一个整数的二进制表示有三种:

-原码
-反码
-补码
-1:
100000000000000000000000000000001(原码)
11111111111111111111111111111111111110(反码)
源码取反 符号位(第一个数)不变,其他位按位取反
11111111111111111111111111111111111111(补码)
源码取反加1

正整数:源码,反码,补码相同

++ - -
int main()
{
	int a = 10;
	int b = ++a;//前置++ 先++,后使用
	printf("%dn", b);//11
	printf("%dn", a);//11

	return 0;
}

int main()
{
	int a = 10;
	int b = a++;//后置++ 先使用,再++

	printf("%dn", b);//10
	printf("%dn", a);//11
关系操作符

== != <= < > >=

逻辑操作符

&& 逻辑与
|| 逻辑或

条件操作符(三目操作符)

exp1 ? exp2 :exp3
exp1 成立 ,exp2计算,整个表达式的结果是:exp2的结果
exp1 不成立,exp3计算,整个表达式的结果是:exp3的结果

int main()
{
	int a = 0;
	int b = 3;
	int max = 0;
	if (a > b)
		max = a;
	else
		max = b;
	max = a > b ? a : b;
	printf("%dn", max);
		return 0;
}
逗号表达式

逗号隔开的一串表达式

int main()
{
	(2, 4 + 5, 6);
	return 0;
}

逗号表达式,是从左向右依次计算的
整个表达式的结果是最后一个表达式的结果

int main()
{
	//(2, 4 + 5, 6);
	int a = 0;
	int b = 3;
	int c = 5;
	int d = (a = b + 2, c = a - 4,b = c + 2);
	return 0;
}
下标引用,函数调用和结构成员

[] () . ->

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	printf("%dn",arr[5]);//[]下标引用操作符
	return 0;
}

int main()
{//调用函数的时候,函数名后边的()就是函数调用操作符
	printf("hehen");

	return 0;
}
关键字
    c语言提供的,不能自己创建关键字关键字不能做变量名
int main()
{
	//大量频繁使用的数据,想放寄存器中,提升效率

	register int num = 100;//建议num的值存放再寄存器中
	return 0;
}
关键字typedef

类型重命名

typedef unsigned int u_int;
int main()
{
	unsigned int num = 100;
	u_int num2 = 100;
	return 0;
}
关键字static

静态的

    static 修饰局部变量static 修饰全局变量static 修饰函数

static 修饰局部变量,改变了局部变量的生命周期(本质上改变了变量的存储类型)

void test()
{
	 static int a = 1;
	a++;
	printf("%d", a);
}
int main()
{
	int i = 0;
	while (i<10) 
	{
		test();
		i++;
	}
	return 0;
}

全局变量在整个工程都可以使用
static修饰全局变量,使得这个全局变量只能在自己所在源文件(.c)内部可以使用
其他源文件不能使用

全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性
但是被static 修饰后,就变成了内部链接属性,其他源文件就不能链接到这个静态全局变量了
static 修饰函数,使得函数只能在自己的源文件内部使用,不能再其他源文件内部使用
本质上:static是将函数的外部链接属性变成了内部链接属性(和static修饰全局变量一样)

#define定义常量和宏
    define定义符号define 定义宏
//define 定义宏
#define ADD(X,Y) X+Y

int main()
{
	printf("%dn", 4*ADD(2, 3));//4*2+3
	return 0;
}
指针

指针就是地址
内存是怎么编号的?
32位 - 32根地址线 - 物理线 - 通电 - 1/0
电信号转化为数字信息:1和0组成的二进制序列
一个内存单元是一个字节,然后分配地址

int main()
{
	int a = 10;//a在内存中要分配空间的-4个字节
	printf("%pn", &a);//%p专门用来打印地址

	int* pa = &a;//pa是用来存放地址的,在c语言中pa是指针变量
	//*说明pa是指针变量
	//int说明pa执行的对象是int类型

	char ch = 'w';
	char* pc = &ch;
	return 0;
}
指针变量的大小
int main()
{
	printf("%dn", sizeof(char*));
	printf("%dn", sizeof(short*));
	printf("%dn", sizeof(int*));
	printf("%dn", sizeof(long*));
	printf("%dn", sizeof(long long*));
	printf("%dn", sizeof(float*));

	return 0;
}

指针大小是相同的
指针需要多大空间,取决于地址的存储需要多大的空间
32位 32bit—4byte
64位 64bit----8byte

结构体

结构体使得c语言有能力描述复杂类型

//创建一个学生
struct Stu
{
	char name[20];
	int age;
	double score;
};
//创建一个书的类型
struct  Book
{
	char name[20];
	float price;
	char id[30];
};
int main()
{
	struct  Stu s ={"张三",20,85.5};//结构体创建和初始化
	printf("%s %d %lfn", s.name, s.age, s.score);//结构体变量.成员变量
	return 0;
 }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号