C语言笔记2 - 变量的作用域/常量/字符串

本文介绍了C语言中的变量作用域规则,包括局部变量在函数内部,全局变量在函数外部,以及如何在不同源文件间共享变量。讲解了const修饰的常量、#define定义的标识符常量、枚举常量和字符串的用法,以及字符串的结束标志和长度计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量的作用域

C 语言中有三个地方可以声明变量:

  1. 在函数或块内部的局部变量
  2. 在所有函数外部的全局变量
  3. 形式参数的函数参数定义中

全局变量:{}外部

局部变量:{}内部

在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用,即全局变量的优先度低于局部变量

reference: C 作用域规则 | 菜鸟教程

 a 可以打印出来,b就不行,会报错

同一个项目中,不同的源文件(.cpp)之间的变量要想相互使用,在未定义的.cpp文件中需要用关键字 extern 申明,未申明不可以使用

常量

const 修饰的常变量,本质上还是变量,但不可以赋新值

const int a = 10;

#define定义的标识符常量

#define TIMES 1000

枚举常量 - 可以一一列举的常量

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//extern int b;
enum gender
{
	//枚举类型的变量的所有可能取值
	//枚举常量
	MALE,	//0(默认),可以赋初值,eg:MALE = 3,后续以此类推
	FEMALE,	//1
	SECRET	//2
};
const int a = 10;

int main()
{
	/***** 枚举常量 *****/
	
	enum gender p1 = MALE;
	enum gender p2 = FEMALE;
	enum gender p3 = SECRET;
	printf("%d\n", p1);
	printf("%d\n", p2);
	printf("%d\n", p3);

	return 0;
}

字符串

字符串是一维字符数组,它的结束标志是一个\0的转义字符(结束标志,不算做字符串内容)

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	/***** 字符串 *****/
	char site1[] = { 'H', 'E', 'L', 'L', 'O', '\0' };	//单个字符单引号
	char site2[] = "HELLO";								//字符串双引号
	printf("字符串1: %s\n", site1);
	printf("字符串2: %s\n", site2);
    
	return 0;
}

两种表示方法效果相同:

 在Visual Studio中会自动在字符串末尾加入\0

如果没有这个'\0',会print出来一些奇奇怪怪的东西,这是因为字符串没有结束符

 字符串的长度

使用strlen来计算,不过得先包含申明该函数的头文件#include<string.h>

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>

int main()
{
	/***** 字符串 *****/
	char site1[] = { 'H', 'E', 'L', 'L', 'O' };	//单个字符单引号
	char site2[] = { 'H', 'E', 'L', 'L', 'O', '\0'};
	char site3[] = "HELLO";	
    
	/* 字符串的长度 */
	int len1 = strlen(site1);
	int len2 = strlen(site2);
	int len3 = strlen(site3);
	int len4 = strlen("abcd");
	printf("%d\n", len1);
	printf("%d\n", len2);
	printf("%d\n", len3);
	printf("%d\n", len4);

	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值