C语言入门第一节:初识C语言

目录

1、数据类型

2、变量和常量

2.1 变量

2.2 常量

3、转义字符

4、常见的关键字

4.1 typedef

4.2 static

4.2.1 修饰局部变量

4.2.2 修饰全局变量 

 4.2.3 修饰函数

5、#define定义常量和宏


1、数据类型

补充一个小知识点:

  1. H:HEX 十六进制
  2. D:DEC 十进制
  3. O:OCT 八进制
  4. B:BIN 二进制

计算机中的单位:

  • bit 比特位(存放一个二进制的位0/1)
  • byte字节 = 8bit
#include <stdio.h>
int main()
{
	printf("%d\n", 100);//打印一个整数
	printf("%c\n", 'a');//打印一个字符
	printf("%s\n", "abc");//打印一个字符串
	printf("%f\n", 3.14);//打印一个单精度浮点数
	printf("%lf\n", 3.14);//打印一个双精度浮点数
	printf("%d\n", sizeof(char));
	return 0;
}

2、变量和常量

2.1 变量

一个关于extern的小知识点:

add.c
//全局变量
int g_val = 2024;

text.c  
#include <stdio.h>
//需要声明外部符号
extern int g_val;
int main()
{
	printf("%d\n", g_val);
	return 0;
}

2.2 常量

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

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量
#include <stdio.h>
#define MAX 1000
enum Sex
{
	MALE = 3,//赋初值
	FEMALE,
	SECRET
};

int main()
{
	//1.字面常量
	10;
	3.14;
	'a';
	"abcdef";
    
	//2.const修饰的常变量
	const int num = 10;//num是具有常属性的,不能改变,但本质上还是变量
	/*创建数组
	int arr[10] = { 0 };//10个元素
	
	int n = 10;
	int arr2[num] = { 0 };//num是变量,会报错,加上const也不可以
	*/
    
	//3.#define定义的标识符常量
	//MAX = 2000;//报错
	int m = MAX;
	printf("m = %d\n", m);
    
	//4.枚举常量(可以一一列举的常量)
	enum Sex s = MALE;
	//MALE = 3;//报错,MALE是常量
	printf("%d\n", MALE);
	printf("%d\n", FEMALE);
	printf("%d\n", SECRET);
    //注:枚举常量的默认是从0开始,依次向下递增1的
    //打印结果 3 4 5
	return 0;
}

3、转义字符

 

#include <stdio.h>
int main()
{
	printf("%c\n", '\'');
	printf("%s\n", "\"");
    printf("%c\n", '\130');//八进制130等于十进制88,X的ASCII码值是88
    printf("%c\n", '\x30');//十六进制30等于十进制48,0的ASCII码值是48
	return 0;
}

运行结果:

'
"
X
0

一道笔试题 :

//程序输出什么?
#include <stdio.h>
int main()
{
    printf("%d\n", strlen("c:\test\328\test.c"));
    return 0;
}

//输出结果:14
//解释:\t是一个转义字符;\32是一个转义字符(八进制由0-7组成)

4、常见的关键字

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

4.1 typedef

//将unsigned int重命名为u_int, 所以u_int也是一个类型名
typedef unsigned int u_int;

typedef struct Node
{
    int data;
    struct Node* next;
}Node;//将struct Node重命名为Node

int main()
{
    unsigned int num1 = 0;
    u_int num2 = 0;
    return 0;
}

4.2 static

4.2.1 修饰局部变量

//代码1
#include <stdio.h>
void test()
{
	int a = 1;//a是局部变量
	a++;
	printf("%d", a);
}//出来之后a就销毁了

int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}
//输出结果:2222222222

//代码2
#include <stdio.h>
void test()
{
    //static修饰局部变量
	static int a = 1;
	a++;
	printf("%d", a);
}//出来之后a没有销毁
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}
//输出结果:234567891011
  • static修饰局部变量的时候,本来一个局部变量是存放在栈区的,如果被static修饰就存储到静态区了
  • static修饰局部变量改变了变量的存储类型(位置),使得这个变量的生命周期变长了,直到程序结束才结束
  • 但是作用域不变,只能在函数内部调用

4.2.2 修饰全局变量 

//代码1
add.c
int g_val = 2023;

test.c
//extern声明外部符号
extern int g_val;
int main()
{
    printf("%d\n", g_val);
    return 0;
}
//输出结果:2023

//代码2
add.c
static int g_val = 2018;

test.c
//extern声明外部符号
extern int g_val;
int main()
{
    printf("%d\n", g_val);
    return 0;
}
//错误
  • 全局变量具有外部链接属性,所以在其他源文件内部依然可以使用

  • static修饰全局变量,改变了这个全局变量的链接属性,由外部链接属性变成了内部链接属性

  • 这个静态变量只能在自己所在的源文件内部使用,不能在其他源文件内部使用了

 4.2.3 修饰函数

static修饰函数和static修饰全局变量是一样的。

5、#define定义常量和宏

//#define是预处理指令
//define定义标识符常量
#define MAX 1000

//define定义宏
#define ADD(x, y) ((x)+(y))
//      名字 参数   宏的实现体

int ADD(int x, int y)//int函数的返回类型 ADD函数名 xy函数参数
{
	return x + y;
}//大括号里的是函数体

int main()
{
    int sum = ADD(2, 3);
    //替换成int sum = ((2)+(3))
    //宏的展开是在预处理阶段进行的,即在编译之前,不占用额外的存储空间
    printf("sum = %d\n", sum);
   
    sum = 10*ADD(2, 3);
    printf("sum = %d\n", sum);
    
    return 0;
}
//输出结果:sum = 5 sum = 50
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值