C语言中,用来标识函数名、变量名、符号常量名、文件名、数组名、类型名的有效字符序列称为( )。

C语言中,用来标识函数名、变量名、符号常量名、文件名、数组名、类型名的有效字符序列称为( )。

答案是:标识符
用来标识变量名、符号常量名、函数名、类型名和文件名等的有效字符序列称为标识符

  • 标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线。例如,正确的标识符:abc,a1,prog_to
  • 不能把C语言关键字作为用户标识符,例如if ,for, while等
  • 标识符长度是由机器上的编译系统决定的,一般的限制为8字符(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)
  • 标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写
  • 标识符命名应做到“见名知意”,例如,长度(外语:length),求和、总计(外语:sum),圆周率(外语:pi)……
  • C语言中把标识符分为三类:关键字,预定义标识符,用户自定义标识符
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1073362
  • 这篇博客你也可以参考下:C语言中数组名到底是什么?
  • 这篇博客也不错, 你可以看下C语言中数组名到底是什么?
  • 除此之外, 这篇博客: C语言中数组名到底是什么?中的 一般情况下,C语言中数组名在表达式中被解读为指向数组首元素的指针 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    C语言中数组名在表达式中被解读为指向数组首元素的指针, 即数组名在表达式中值为数组首元素的地址。(但有个例外,int a[2];int (*pa)[2]; pa=&a;数组名前加&,取得“指向数组的指针”,这时a不解读为指向数组首元素的地址)。根据ANSI C的定义,在数组前加上&,可以取得“指向数组的指针”。
    例如,int a[2];在表达式中a表示数组首元素地址;
    再例如,int a[3][2];在表达式中a仍然表示数组首元素的地址,不过此时数组a的基本元素是int[2],因此a+1每次会增加基本元素int[2]的大小。

    C语言中不存在多维数组,只存在数组的数组,所谓的多维数组是便于理解提出的一种说法而已。
    C语言中数组类型是包含元素个数的。

    示例1:

    #include <stdio.h>
    
    int main()
    {
    	int a[3][2] = { 0 };
    
    	for (int i = 0; i != 3; ++i)
    	{
    		for (int j = 0; j != 2; ++j)
    		{
    			printf("a[%d][%d]: %p\t",i,j,&a[i][j]);
    		}
    		printf("\n");
    	}
    	printf("\n");
    
    	printf("&a + 1: %p\n", &a + 1); // 实际相对于a[0][0]地址增加了3*2*sizeof(int)=24
    	printf("a + 1: %p\n", a + 1);   // 实际相对于a[0][0]地址增加了2*sizeof(int)=8
    	
    	printf("\n--------------------------------------------\n\n");
    
    	int b[3] = { 0 };
    	printf("&b[0]: %p\n", &b[0]);   // 数组b首元素地址
    	printf("&b + 1: %p\n", &b + 1); // 实际相对于b[0]地址增加了3*sizeof(int)=12
    	printf("b + 1: %p\n", b + 1);   // 实际相对于b[0]地址增加了sizeof(int)=4
    
    	return 0;
    }
    

    输出的结果可能是:

    ellipse
    图1 结果示意

    示例2:

    #include <stdio.h>
    
    int main() {
    	int arr[5] = { 1,2,3,4,5 };
    	int(*parr)[5];
    	parr = &arr;  // parr只有一个元素,即arr
    
    	for (int i = 0; i != 5; ++i)
    	{
    		// (*(parr+0))[i] += 1;
    		// (*parr)[i] += 1;
    		parr[0][i] += 1;  // 很容易错写成parr[i] += 1;
    	}
    
    	for (int i = 0; i != 5; ++i)
    	{
    		// printf("%d\n", (*parr)[i]);
    		printf("%d\n", parr[0][i]);  // 输出结果为2 3 4 5 6
    	}
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^