我是靠谱客的博主 凶狠保温杯,这篇文章主要介绍c语言初阶mian函数数据类型ASCII表常量,变量字符串+转义字符操作符常见的关键字#define指针结构体,现在分享给大家,希望可以做个参考。

c入门

  • mian函数
  • 数据类型
  • ASCII表
  • 常量,变量
  • 字符串+转义字符
  • 操作符
  • 常见的关键字
  • #define
  • 指针
  • 结构体

mian函数

main函数—主函数是程序的入口有且只有一个主函数

//void --告诉我们main函数不需要参数
int main(void)
{
   return 0;
 }

数据类型

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

计算机中的单位
bit–比特位
byte - 字节 = 8 bit
kb =1024byte
mb=1024kb
gb=1024mb
tb=1024mb
pb=1024tb

ASCII表

在这里插入图片描述

int main()
{
	char ch = 'E';
	printf("%cn", ch);//E--字符
	printf("%dn", ch);//69--ASCII码值
	return 0;
}

常量,变量

变量
变量的分类: 1.全局变量 2.局部变量 在大括号{}内部的是局部变量,外部的是全局变量
int g = 100;//全局变量

void test()
{
	int b = 101;//局部变量
}

int main()
{
	int a = 10;//局部变量
	return 0;
}

当全局变量和局部变量同名时

int a = 100;//全局变量

int main()
{
	int a = 10;//局部变量
	printf("%dn", a);//10
	return 0;
}

局部变量和全局变量的名字可以相同,相同时,局部变量优先

变量的作用域和生命周期

作用域:
局部变量的作用域:局部变量所在的局部范围
全局变量的作用域:整个工程的任意地方

生命周期:
局部变量的生命周期:进入局部变量所在的范围,生命周期开始,出局部范围生命周期结束。
全局变量的生命周期:程序的生命周期

销毁:没有访问权限。把内存还给操作系统,内存还在,不归你管。

常量

1.const修饰的常变量

在这里插入图片描述
一个变量不能被修改,我们就说具有常属性 — 不能被改变的属性

在这里插入图片描述
2.#define 定义的标识符常量

#define MAX 100

把MAX替换成100,MAX不能被修改。

3.枚举常量

enum Sex//枚举类型
{
//枚举的可能取值- 枚举常量
	MALE,//默认从0开始,依次往下递增,可以赋初值,赋完初值不能被修改
	FEMALE=7,
	SECRET
};

int main()
{
	enum Sex s = FEMALE;
	printf("%dn", s);
	printf("%dn", FEMALE);
	return 0;
}

字符串+转义字符

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


在这里插入图片描述

没’’结束就不能作为字符串
在这里插入图片描述
f后面就会打印随机值,只要主动添加’’就可以

char ch1[] = { 'a','b','c','d','e','f',''};

strlen是库函数,求字符串长度的,’’是字符串的结束标志,不算长度。没有’’算长度也不对,因为找到’’才会停止

转义字符
	printf("%cn", ''');//打印'
	printf("%sn", """);//打印"
	printf("%sn", "c:\test\test.c");//打印带有t的路径

    //ddd-ddd的八进制数字转换成十进制1后的值,作为ASCII值代表的字符
	printf("%cn", '65');
	//八进制的065转换成十进制是53,53作为ASCII值代表的字符是5
	printf("%cn", '5');

	printf("%cn", 'x51');//十六进制--81--Q

在这里插入图片描述
面试题:printf("%dn", strlen("c:test328test.c") );打印14
在这里插入图片描述

操作符

算术操作符

      • / %
    int a=5/2;//商二余一,求的是商
	int b = 5 % 2;//%-取模(余)得到的是整除之后的余数

移位操作符–二进制位的

右移操作符
<< 左移操作符

    int a = 5;
	int b = a << 1;//移动的是二进制位,a的值没有变

位操作符
&按位与:只要有0就为0,两个都是1才为1
^按位异或:相同为0,相异为1
| 按位或:有1则1,全0则0

int a = 3;
	int b = 5;
	//|按位或:有1则1,全0则0
	//00000000000000000000000000000011
	//00000000000000000000000000000101
	//00000000000000000000000000000111
	int c = a | b;
	//^按位异或:相同为0,相异为1
	//00000000000000000000000000000011
	//00000000000000000000000000000101
	//00000000000000000000000000000110
	//int c = a ^ b;
	//&按位与:只要有0就为0,两个都是1才为1
	//00000000000000000000000000000011
	//00000000000000000000000000000101
	//00000000000000000000000000000001
	
	//int c = a & b;

赋值操作符

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

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

1.:逻辑反操作

int main()
{
	int a = 0;
	printf("%dn", !a);//当a为0时,规定!a=1
	if (a)//a为真,进入if语句
	{

	}
	if (!a)//a为假,进入if语句
	{

	}
	return 0;
}

2.sizeof操作符:操作数类型的长度,单位字节

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

//整数在内存中存储的时候,存储的是二进制
//一个整数的二进制表示有三种形式
//原码 
//反码
//补码

//正的整数:原,反,补相同
//负的整数:原,反,补需计算

//有符号的整数,最高位是0,表示正数
             //最高位是1,表示负数

//int a = 1;
//00000000000000000000000000000001 - 原码
//00000000000000000000000000000001 - 反码
//00000000000000000000000000000001 - 补码

//int a=-1;
//10000000000000000000000000000001 - 原码
//11111111111111111111111111111110 - 反码:原码的符号位不变,其他位按位取反
//11111111111111111111111111111111 - 补码:反码的二进制位加1

//内存中存储整数时,存储的是二进制的补码
//计算的时候采用的也是补码
int main()
{
	int a = 0;
	//00000000000000000000000000000000
	// 	   按位取反
	//11111111111111111111111111111111 - 补码
	//11111111111111111111111111111110 - 反码
	//10000000000000000000000000000001 - 原码

	printf("%dn", ~a);
	
	return 0;
}

4.++,–

	int a= 1;
	/*int c = --a;*/
	//int c = ++a;//前置++:先++,后使用(赋值给c)
	//c = a++;//后置++:先使用,后++

5.(类型):强制类型转换

    //强制类型转换
	int a = (int)3.12;

逻辑操作符

&& - 逻辑与 - 并且
|| - 逻辑 - 或者

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

exp1 ? exp2 : exp3

在这里插入图片描述

int a = 1;
	int b = 2;
	int c = 4;
	//, -逗号表达式
	//整个逗号表达式的结果是最后一个表达式的结果
	int d = (a = b - 3, b = a + c, c = a + b);
	        //a=-1       b=3        c=2
	//d=2

下标引用操作符

    int arr[10] = { 1,2,3,4,5,6,7,8 };//[]这里的不是下标引用操作符
	arr[1];//[]下标引用操作符

函数调用操作符

    printf("%d", arr[1]);//()函数调用操作符
	int ret=Add(2, 3);

常见的关键字

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

auto 自动变量 break 终止循环 const常属性 continue继续,用于循环 default默认

enum 枚举关键字 extern 声明外部符号 register 寄存器

sizeof 计算所占内存空间大小 typedef类型重定义 union联合体

unsigned 无符号 signed 有符号的 void空

register – 寄存器

寄存器是存储空间,在电脑上一般集成到CPU上的
所以和内存是不同的独立的存储空间

在这里插入图片描述

	register int num = 100;
	//建议把100存放在寄存器中,编译器最终决定
	//&-取内存的地址

static在c语言中用法
1.修饰局部变量
只在第一次调用时进行初始化,后序调用该函数时,使用的都是上次结束前该变量的值

void test()
{
	//static修饰局部变量,改变了变量的生命周期(跟程序的一样),不影响作用域
	static int a = 1;
	a++;
	printf("%d ", a);
}

2.修饰全局变量
在这里插入图片描述

static修饰全局变量
默认一个全局变量是具有外部链接属性
而如果全局变量被static修饰,使得
全局变量的外部链接属性变成了内部链接属性
这个全局变量只能在本源文件的内部使用
其他源文件无法链接到,也无法使用

3.修饰函数
在这里插入图片描述
函数是具有外部链接属性的,如果被static修饰,外部链接属性就变成了内部链接属性
函数只能在件内部使用

#define

替换

#define NUM 100;
#define MAX(x,y) (x>y?x:y)

指针

一个内存单元占用一个字节

int a=10;
int* pa=&a;

pa是存放地址的变量,这样的变量就被称为指针变量

32位机器-32根地址线
地址的长度四个字节就能存放,指针是用来存放地址的,所以也是四个字节(32位)

结构体

结构体— 用来描述复杂对象

struct student
{
	char name[20];
	int age;
	char sex[5];
	char num[20];
};

int main()
{
	//创建的结构体变量
	struct student s1 = { "张张",20,"男","20192122" };
	//. 结构体变量.成员名
	printf("姓名:%s 年龄:%d 性别:%s 学号:%sn", s1.name, s1.age, s1.sex, s1.num);
	
	struct student* ps = &s1;
	printf("姓名:%s 年龄:%d 性别:%s 学号:%sn", (*ps).name, (*ps).age, (*ps).sex, (*ps).num);
	printf("姓名:%s 年龄:%d 性别:%s 学号:%sn", ps->name, ps->age, ps->sex, ps->num);
	//ps是指针,所以ps->name,指向的就是对象的成员name
	//-> 结构体指针->成员名
	return 0;
}

. 结构体变量.成员名
-> 结构体指针->成员名

最后

以上就是凶狠保温杯最近收集整理的关于c语言初阶mian函数数据类型ASCII表常量,变量字符串+转义字符操作符常见的关键字#define指针结构体的全部内容,更多相关c语言初阶mian函数数据类型ASCII表常量,变量字符串+转义字符操作符常见内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部