首页 > 其他分享 >C语言 - 标识符

C语言 - 标识符

时间:2024-06-18 09:03:42浏览次数:31  
标签:示例 int float C语言 marks main 标识符

C语言中的标识符有助于识别 C 代码中的变量常量函数等。C 是一种高级计算机语言,它允许您使用名称引用内存位置,而不是以二进制或十六进制形式使用其地址。

C 标识符

标识符是用户定义的名称,以便于引用内存。它还用于定义程序中的各种元素,例如函数、用户定义类型、标签等。因此,标识符是帮助程序员更方便地使用编程元素的名称。

当使用标识符定义变量或函数时,C 编译器会为其分配内存并将内存位置与标识符相关联。因此,每当在指令中使用标识符时,C 编译器都可以访问其关联的内存位置。例如,当我们声明一个变量 age 并为其赋值时,如下图所示,编译器会为其分配一个内存位置。

即使程序员可以使用他选择的标识符来命名变量或函数等,也要遵循某些规则来形成有效的标识符。

C 标识符的命名规则

下面给出的是形成标识符的规则

  • 关键字不能用作标识符,因为它们是预定义的。
  • 在 C 使用的字符集中,标识符中只允许使用字母(大写和小写)和下划线符号 (_)。这意味着您不能使用标点符号等字符作为标识符的一部分。
  • 标识符必须以字母(大写或小写)或下划线开头。这意味着,数字不能是标识符的第一个字符。
  • 后续字符可以是字母或数字或下划线。
  • 同一标识符不能用作两个实体的名称。标识符在当前作用域中只能使用一次。

根据上述规则,有效和无效标识符的一些示例如下 -

有效的 C 标识符

age, Age, AGE, average_age, __temp, address1, phone_no_personal, _my_name

无效的 C 标识符

Average-age, my name, $age, #phone, 1mg, phy+maths

Average-age, my name, $age, #phone, 1mg, phy+maths

C 标识符的示例

以下程序显示错误

#include <stdio.h>

int main () {

   /* variable definition: */
   int marks = 50;
   float marks = 65.50;
   printf("%d %f", marks, marks);

   return 0;
}

错误

main.c: In function 'main':
main.c:7:10: error: conflicting types for 'marks'; have 'float'
    7 |    float marks = 65.50;
      |          ^~~~~
main.c:6:8: note: previous definition of 'marks' with type 'int'
    6 |    int marks = 50;
      |        ^~~~~
main.c:8:13: warning: format '%d' expects argument of type 'int', but argument 2 has type 'double' [-Wformat=]
    8 |    printf("%d %f", marks, marks);
      |            ~^      ~~~~~
      |             |      |
      |             int    double
      |            %f  

  • 标识符区分大小写,因此年龄与年龄不同。
  • ANSI 标准可识别标识符的 31 个字符的长度。虽然您可以选择具有更多字符的名称,但只会识别前 31 个。因此,您可以形成一个有意义的描述性标识符。

C 标识符的范围

在 C 语言中,标识符的范围是指声明标识符并可以使用/访问标识符的位置。标识符有两个范围:

全局标识符

如果在声明任何函数之前已在外部声明标识符,则将其称为全局(外部)标识符。

#include <stdio.h>

int marks= 100; // external identifier

int main() {
   printf("The value of marks is %d\n", marks);
}

输出

The value of marks is 100

这是因为标记是在任何块之外定义的,因此它是一个外部标识符。

本地标识符

另一方面,任何函数内部的标识符都是本地(内部)标识符。

#include <stdio.h>

int main() {
   int marks= 100; // internal identifier

   printf("The value of marks is %d\n", marks);
}

输出

The value of marks is 100

这是因为标记是在 main 函数内部定义的,因此它是一个内部标识符。

不同类型的 C 标识符示例

标识符也可以出现在函数的前向声明中。但是,函数的声明签名应与定义匹配。

变量标识符示例

int marks1 = 50, marks2 = 60;
float avg = (float) (marks1+marks2)/2;

函数标识符示例

int average(int marks1, int marks2)
{
   return (float) (marks1+marks2)/2;
}

用户定义类型标识符示例

struct student
{
   int rollno;
   char *name;
   int m1,m2,m3;
   float percent
};
struct student s1 = {1, "Raju", 50, 60, 70, 60.00};

typedef 标识符示例

struct student
{
   int rollno;
   char *name;
   int m1,m2,m3;
   float percent
};
typedef struct student STUDENT;
STUDENT s1 = {1, "Raju", 50, 60, 70, 60.00};

标签标识符示例

#include <stdio.h>
int main()
{
   int x=0;
   begin:
   x++;
   if (x>=10)
      goto end;
   printf("%d\n", x);
   goto begin;

   end:
      return 0;
}

输出

1
2
3
4
5
6
7
8
9

枚举标识符示例

#include <stdio.h>
enum week{Mon=10, Tue, Wed, Thur, Fri=10, Sat=16, Sun};

int main() {
   printf("The value of enum week: %d\n",Mon);
   return 0;
}

输出

The value of enum week: 10

因此,标识符在 C 程序中随处可见。为编码元素(如变量或函数)选择正确的标识符对于增强程序的可读性以及调试和文档非常重要。

标签:示例,int,float,C语言,marks,main,标识符
From: https://blog.csdn.net/mzgxinhua/article/details/139688547

相关文章

  • C语言数据结构队列实现-链表队列
    简单实现了下链表队列代码如下#include<stdio.h>#include<stdlib.h>typedefstructNode{intdata;structNode*next;}Node;//入队列voidinsertList(Node*head,intelem){Node*temp=head;Node*newNode=(Node*)malloc(sizeof(Node));......
  • C语言---------深入理解指针
    目录一、字符指针二、指针数组:三、数组指针:1、定义:2、&数组名和数组名区别:3、数组指针的使用:四、数组参数,指针参数:1、一维数组传参:2、二维数组传参:3、一级指针传参:4、二级指针传参:五、函数指针:1、定义:2、函数名和&函数名:3、函数指针的调用:六、函数指针数组:七......
  • c语言连接两个字符串
    在C语言中,连接两个字符串可以使用标准库函数strcat。这个函数将一个字符串添加到另一个字符串的末尾。使用strcat时,需要确保目标字符串有足够的空间来容纳源字符串,否则可能会导致缓冲区溢出。下面是strcat函数的基本用法示例:#include<stdio.h>#include<string.h>......
  • C语言指针
    文章目录内存和地址内存地址指针变量和地址取地址操作符`&`指针变量和解引用操作符`*`指针变量如何拆解指针类型解引用操作符指针变量的大小指针变量类型的意义指针的解引用指针+-整数`void*`指针`const`修饰指针`const`修饰变量`const`修饰指针变量指针运算指针......
  • C语言操作符
    C语言中的数据类型和变量以及简单的操作符文章目录C语言中的数据类型和变量以及简单的操作符前言数据类型字符型整型浮点型布尔类型`signed`和`unsigned`判断数据类型的大小/长度sizeof的介绍计算各种数据类型的大小/长度变量变量的创建变量的分类算术操作符赋值操作......
  • 函数(上)(C语言)
    函数(上)一.函数的概念二.函数的使用1.库函数和自定义函数(1)库函数(2)自定义函数的形式2.形参和实参3.return语句4.数组做函数参数一.函数的概念数学中我们其实就见过函数的概念,比如:一次函数y=kx+b,k和b都是常数,给⼀个任意的x,得到⼀个y值。其实在C语言也......
  • 初学C语言——循环语句2
    switchswitch语句也是一种分支语句,常常用于多分支的情况switch语句,语法结构语法结构:switch(整形表达式){    语句项;语句项:是一些case语句如:    case整型常量表达式:            语句;}解释break,defaultbreak:1.在循环......
  • 初学C语言——循环语句1
    C语言是结构化的程序设计语言分为:顺序结构、选择结构(分支语句)、循环结构(循环语句)分支语句和循环语句分支语句有if语句和switch语句循环语句有while、for、do、while、do...while、goto语句什么是语句?C语言中有一个分号(;)隔开的就是一条语句如:    printf("......
  • C语言数据结构队列实现-顺序队列
    顺序队列,即采用顺序表模拟实现的队列结构。我们知道,队列具有以下两个特点:数据从队列的一端进,另一端出;数据的入队和出队遵循"先进先出"的原则;因此,只要使用顺序表按以上两个要求操作数据,即可实现顺序队列。首先来学习一种最简单的实现方法顺序队列简单实现由于顺序队列的底层......
  • 【c语言】字符串函数和内存函数
    ......