找到 1356 篇文章 关于 C

C 语言中的宏和函数

Nishtha Thakur
更新于 2019-07-30 22:30:25

2K+ 浏览量

在本节中,我们将了解 C 语言中宏和函数之间的区别。宏是预处理的,这意味着在编译过程中所有宏都将被预处理。函数不是预处理的,而是编译的。宏不进行类型检查,因此对于不同类型的输入可能会出现一些问题。在函数的情况下,则不会发生这种情况。此外,对于宏,如果输入没有正确维护,则可能会生成一些无效的结果。请查看以下程序以了解该问题。示例#include #define SQUARE(x) x ... 阅读更多

将 C/C++ 代码转换为汇编语言

Smita Kapse
更新于 2019-07-30 22:30:25

6K+ 浏览量

在这里,我们将了解如何使用 gcc 从 C 或 C++ 源代码生成汇编语言输出。gcc 提供了一个很好的功能,可以在执行源代码时获得所有中间输出。要获取汇编程序输出,我们可以为 gcc 使用选项“-S”。此选项显示编译后的输出,但在发送到汇编程序之前。此命令的语法如下所示。gcc –S program.cpp现在,让我们看看输出会是什么样子。这里我们使用了一个简单的程序。在此程序中,两个数字存储在变量 x 和 ... 阅读更多

free() 如何知道要释放的内存大小?

Anvi Jain
更新于 2019-07-30 22:30:25

2K+ 浏览量

free() 函数用于释放使用 malloc()、calloc() 和 realloc() 分配的内存。free 的语法很简单。我们只需使用带有指针的 free。然后它可以清理内存。free(ptr);free() 没有将任何大小作为参数,而只有指针。所以问题来了,free() 函数如何知道要释放的块的大小?当我们使用动态内存分配技术进行内存分配时,它是在实际的堆部分完成的。它创建了一个比请求大小大一个字的块。此额外的一个字用于 ... 阅读更多

C 程序的内存布局

Nishtha Thakur
更新于 2019-07-30 22:30:25

2K+ 浏览量

C 程序的内存布局如下所示。有几个级别。它们是-堆栈段堆段文本段数据段现在让我们看看这些部分的功能。序号部分和描述1堆栈进程堆栈包含临时数据,例如方法/函数参数、返回地址和局部变量。它是为自动变量和函数参数分配的内存区域。它还在执行函数调用时存储返回地址。堆栈使用 LIFO(后进先出)机制来存储局部或自动变量、函数参数以及存储下一个地址或返回地址。返回地址是指返回 ... 阅读更多

C 语言中的复合字面量

Smita Kapse
更新于 2019-07-30 22:30:25

490 浏览量

在本节中,我们将了解 C 语言中的复合字面量是什么。复合字面量是在 C99 标准中引入的。使用此功能,可以创建未命名的对象。在下面的示例中,我们将了解如何使用复合字面量来生成没有任何名称的对象。示例#include struct point {    int x;    int y; }; void display_point(struct point pt) {    printf("(%d,%d)", pt.x, pt.y); } main() {    display_point((struct point) {10, 20}); }输出(10,20)

C 结构和 C++ 结构的区别

Nishtha Thakur
更新于 2019-07-30 22:30:25

3K+ 浏览量

在这里,我们将了解 C 中的结构和 C++ 中的结构的区别。C++ 结构在很大程度上类似于 C++ 中的类。在 C 结构中,所有成员都是公共的,但在 C++ 中,它们默认为私有的。其他一些差异如下所示。C 结构C++ 结构C 中的结构不能在结构内包含成员函数。C++ 中的结构可以包含成员函数和成员变量。我们不能在 C 中直接初始化结构数据。我们可以在 C++ 中直接初始化结构数据。在 C 中,我们必须编写“struct”关键字来声明结构类型变量。在 C++ 中,我们不需要使用“struct” ... 阅读更多

C 语言中的多行宏

Anvi Jain
更新于 2019-07-30 22:30:25

4K+ 浏览量

在本节中,我们将了解如何在 C 语言中编写多行宏。我们可以像函数一样编写多行宏,但是对于宏,每一行都必须以反斜杠“\”字符结尾。如果我们使用花括号“{}”并且宏以“}”结尾,则可能会产生一些错误。因此,我们可以将整个内容括在括号中。请查看以下程序以了解多行宏。示例#include #define PRINT(x, str) ({\    printf("The number %d", x);\    printf(" is ");\    printf(#str);\    printf("");\ }) int main() {    int x = 10;    if(x % 2 == 0){       PRINT(x, EVEN);    } }输出The number 10 is EVEN

编写一个 C 宏 PRINT(x),它打印 x

Nishtha Thakur
更新于 2019-07-30 22:30:25

2K+ 浏览量

在这里,我们将了解如何定义一个名为 PRINT(x) 的宏,它将打印作为参数传递的 x 的任何值。要解决此问题,我们将使用字符串化运算符。使用此运算符,x 将转换为字符串,然后通过在内部调用 printf() 函数,x 的值将被打印。让我们看看示例以更好地了解。示例#include #define PRINT(x) printf(#x) int main () {    PRINT(Hello);    printf("");    PRINT(26);    printf("");    PRINT(2.354721);    printf(""); }输出Hello 26 2.354721

C 语言中负数的模运算

Smita Kapse
更新于 2019-07-30 22:30:25

1K+ 浏览量

在这里,我们将了解如果我们使用负数来获取模数,结果会是什么。让我们看看以下程序及其输出以了解。示例#include int main() {    int a = 7, b = -10, c = 2;    printf("Result: %d", a % b / c); }输出Result: 3这里 % 和 / 的优先级相同。所以 % 首先工作,所以 a % b 生成 7,现在除以 c 后,它生成 3。这里对于 a % b,左操作数的符号附加到 ... 阅读更多

C 语言中的扫描集

Nishtha Thakur
更新于 2019-07-30 22:30:25

3K+ 浏览量

让我们看看 C 语言中的扫描集是什么。扫描集基本上是 scanf 函数族支持的一个说明符。它由 %[] 表示。在扫描集中,我们只能指定一个字符或一组字符(区分大小写)。当处理扫描集时,scanf() 只能处理扫描集中提到的那些字符。示例#include int main() {    char str[50];    printf("Enter something: ");    scanf("%[A-Z]s", str);    printf("Given String: %s", str); }输出Enter something: HElloWorld Given String: HE它忽略了用小写字母编写的字符。“W”也被忽略,因为有一些 ... 阅读更多

广告