1、变量的声明和定义有什么区别?
在C语言中声明变量:变量声明仅在编译时向编译器提供以给定类型和名称存在的变量的确定性,以便编译器继续进行进一步编译,而不需要该变量的所有细节。 在 C 语言中,当我们声明一个变量时,我们只将信息提供给编译器,但没有为它保留内存。 它只是一个引用,通过它我们只向编译器保证这个变量可以定义在函数内部或函数外部。 注意:我们可以多次声明一个变量,但只定义一次。 例如: extern int data; extern int foo(int, int); int fun(int, char); //
2、全局变量和静态全局变量有什么区别?
全局变量和静态全局变量有不同的联系。 这就是全局变量可以在文件外部访问但静态全局变量只能在声明它的文件内访问的原因。 静态全局变量 ===>>> 内部链接。 非静态全局变量 ===>>> 外部链接。
3、C语言中的存储类是什么?
存储类决定程序中变量或函数的范围(生命周期)和范围(可见性)。 每个变量都在内存中的某个位置以位的形式存储变量的值。 存储类决定这些变量值将存储在 CPU 寄存器、堆栈内存、BSS 或 DS 中的位置。 C语言编程中有四种可用的存储类,它们如下: autostaticexternregister
4、内部静态变量和外部静态变量的区别是什么?
在C语言中,外部静态变量有内部链接,内部静态变量没有链接。 这就是它们具有不同范围但两者都将在整个程序中存活的原因。 外部静态变量 ===>>> 内部链接。 内部静态变量 ===>>> 无。
5、typedef和宏有什么区别?
让我们先来看一下 typedef 和宏的简短描述,以了解它们之间的区别。 typedefC语言提供了一个非常重要的关键字 typedef,用于为现有类型定义新名称。 typedef 是编译器指令,主要与用户定义的数据类型(结构、联合或枚举)一起使用,以降低它们的复杂性并增加代码的可读性和可移植性。 语法: typedef type NewTypeName; 示例: typedef unsigned int UnsignedInt; 现在 UnsignedInt 是一个新类型,就可以使用它来创
6、以下 C 代码的输出是什么?
#include<stdio.h>
int main()
{
typedef auto int myAutoInt;
myAutoInt data = 4;
printf(“%d”,data);
return 0;
}
C
编译器错误。 解释:typedef 已被视为部分存储类,因此不能一次混合两个存储类。
7、C语言中的变量是什么?
C语言中的变量定义了一个位置名称,可以在其中放置值,并且可以在程序中需要时使用这些值。 换句话说,可以说变量是一个名称(或标识符),它指示内存中的某个物理地址,其中数据以字符串位的形式存储。 在C语言中,每个变量都有特定的数据类型(预定义的或用户定义的),这些数据类型决定了变量的大小和内存布局。 注意:每个变量都绑定了两个重要的属性,范围和范围。
8、使用变量 p 写出下一些声明:
1、一个整数变量。
2、五个整数的数组。
3、指向整数的指针。
4、一个由十个指向整数的指针组成的数组。
5、指向整数的指针。
6、指向三个整数数组的指针。
7、一个指向函数的指针,它将指向字符的指针作为参数并返回一个整数。
8、一个由五个指针组成的数组,指向接受一个整数参数并返回一个整数的函数。
变量 p 对应的声明如下: 1. int p; // An integer 2. int p[5]; // An array of 5 integers 3. int *p; // A pointer to an integer 4. int *p[10]; // An array of 10 pointers to integers 5. int **p; // A pointer to a pointer to an integer 6. int (*p)[3]; // A pointer
9、C语言有哪些数据类型?
数据类型是数据的分类,它告诉编译器或解释器程序员打算如何使用数据。 换句话说,您可以说它定义了变量的大小(BYTE)和范围。C语言中数据类型的分类:1、预定义数据类型(int、char、float等)2、用户定义的数据类型(struct、union、enum) 在 C 语言中,不同的数据类型有不同的范围。 范围因编译器而异。 在下表中,根据 32 位 GCC 编译器列出了一些具有范围和格式说明符的数据类型。 数据类型 Memory (bytes) 范围
10、关键字 static 的用途是什么?
在 C 语言中,static 关键字非常重要。 如果在变量或函数中使用了 static 关键字,那么只有内部链接或无链接有效。1、静态变量只初始化一次,因此在函数体内声明为静态的变量在函数调用之间保持其先前值。2、带有static关键字的全局变量具有内部链接,因此只能在翻译单元(.c)内访问。 其他翻译单元无法访问它。 static 关键字保护变量从另一个编译单元访问。3、默认情况下,在 C 语言中,函数的链接是外部的,它可以被同一个或另一个翻译单元访问。 在 static 关键字的帮助下,可以
11、有哪些不同类型的链接?
C语言有3种链接,外部链接、内部链接和无链接。
12、静态变量可以在头文件中声明吗?
可以,我们可以在头文件中声明静态变量。
13、C语言中整数的大小取决于什么?
C标准解释了整数的最小大小应该是 16 位。 一些编程语言解释说整数的大小取决于实现,但可移植程序不应该依赖它。整数的大小主要取决于编译器编写者为底层处理器编写的编译器类型。可以看到编译器根据便利性和底层架构愉快地改变整数的大小。 因此,建议使用 C99 整数数据类型(uin8_t、uin16_t、uin32_t …)代替标准 int。
14、整数是有符号的还是无符号的?
在标准 C 语言中,整数数据类型默认是有符号的。 所以如果创建一个整数变量,它可以存储正值和负值。
15、C中的无符号整数和有符号整数有什么区别?
有符号和无符号整数类型具有相同的存储(根据标准至少 16 位)和对齐方式,但它们仍然存在很多差异,在下面的行中,描述有符号和无符号整数之间的一些差异。 有符号整数可以同时存储正值和负值,但在它旁边无符号整数只能存储正值。有符号整数类型的非负值范围是相应无符号整数类型的子范围。例如: 假设整数的大小为 2 个字节。有符号整数 -32768 到 +32767无符号整数 0 到 65535 在计算无符号整数时,它永远不会溢出,因为如果计算结果大于无符号整数类型的最大值,则它会以比结果类型可以表示的
16、宏和函数有什么区别?
宏和函数的区别如下所示:
17、以下 C 代码的输出是什么?
#include <stdio.h>
#define PRINT(var,data) do {
if(var < data)
{
printf(“Aticleworld”);
++var;
}
}while(1);
int main()
{
PRINT(0,2);
return 0;
}
C
输出:编译器错误。说明: 扩展宏时,var 将被替换为 0(Rvalue)。 因为正在尝试增加 Rvalue,所以将收到编译器错误。
18、C语言中的枚举是什么?
C语言中的枚举是用户定义的数据类型。 它由一组命名的常量整数组成。 使用 enum 关键字,我们可以通过使用枚举标签(可选)和命名整数列表来声明枚举类型。基本上,我们使用枚举来增加代码的可读性,并且与符号常量(宏)相比,使用枚举更容易调试代码。 enum 最重要的属性是它遵循范围规则,编译器会自动将值分配给它的成员常量。 注意:枚举类型的变量存储由该类型定义的枚举列表的值之一。 enum 的语法如下: enum Enumeration_Tag { Enumeration_List }; E
19、关键字 const 是什么?
const 限定符仅向编译器指示无法更改限定对象的值。 简单来说, const 表示不可修改(不能在运行时给对象赋值)。 语法: const DataType Identifier = Value; e.g. const int iData = 0;
20、什么时候应该在C程序中使用 const?
在程序中有以下地方需要使用 const 关键字: 在引用函数参数调用中,如果不想更改已传入函数的实际值。 int PrintData ( const char *pcMessage); 在某些地方, const 比宏更好,因为 const 由编译器处理并且具有类型检查。 const int ciData = 100; 对于 I/O 和内存映射寄存器,const 与 volatile 限定符一起使用以实现高效访问。 const volatile uint32_t *DEVICE_STATUS
21、以下代码声明的含义是什么&
2022年度C语言面试题库汇编(含完整答案)
本文整理了2022年C语言面试中常见的问题和答案,包括变量声明与定义的区别、全局变量与静态全局变量的差异、存储类与链接类型、const和volatile关键字的使用、数据类型、指针操作、内存管理和函数指针等核心概念。通过深入探讨这些主题,帮助求职者和开发者更好地理解和掌握C语言的基础和高级特性。
摘要由CSDN通过智能技术生成