C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2

简介: C语言易混淆、简单算法、结构体题目练习、常见关键字总结

C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1

https://developer.aliyun.com/article/1506622


四、C语言常见关键字

1.const关键字

在C语言中通常我们把const关键字称作只读变量,不能通过变量本身修改它的数值,但是可以通过其他方式去修改,比如通过地址

const在笔试题中经常以下面的4种方式出现,问哪些能修改,哪些不能修改

我们只需要记住一个原则,就近原则,const靠近谁,修饰的就是谁


第一个和第二个一样,const放在前面和后面都是在星号前面,靠近星号,所以它们修饰的是*p,


也就是指针p可以修改,但是p指向的内存不能修改


第三个const靠近p,所以它修饰指针p,也就是指针p不能修改,但是p指向的内存可以修改


第四个综合了前面三个,指针p不能修改,p指向的内存也不能修改


2.static关键字在C语言中的作用

static关键字有三个主要作用:

1.修饰全局变量

2.修饰函数

3.修饰局部变量

(1)首先是修饰全局变量,就是变量只能在本文件中使用,不能在其他文件中使用

代码示例:vi 1.c

vi 2.c

编译:gcc 1.c 2.c -o main

./main

编译结果:

假设用上static关键字

编译出错:因为num被static修饰,只能在1.c文件中使用

(2)其次,可以用static修饰函数,作用也差不多,函数只能在本文件中调用

比如这次在2.c中用static修饰函数

编译的时候又会出错:因为在1.c中无法使用2.c中的函数

(3)static修饰局部变量,可以改变变量的生命周期,直到程序运行结束时才会被释放

经典笔试题示例:num存放在栈区,函数调用完会释放

编译结果:

用static修饰:num存放在静态数据区,程序运行结束才释放

编译结果:

相关文章
|
7天前
|
搜索推荐 C语言
【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)
本文介绍了快速排序的升级版——三路快排。传统快速排序在处理大量相同元素时效率较低,而三路快排通过将数组分为三部分(小于、等于、大于基准值)来优化这一问题。文章详细讲解了三路快排的实现步骤,并提供了完整的代码示例。
28 4
|
18天前
|
存储 算法 数据管理
C语言算法复杂度
【10月更文挑战第20天】
C语言算法复杂度
|
9天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
50 8
|
9天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
36 7
|
22天前
|
存储 C语言
如何在 C 语言中实现结构体的深拷贝
在C语言中实现结构体的深拷贝,需要手动分配内存并逐个复制成员变量,确保新结构体与原结构体完全独立,避免浅拷贝导致的数据共享问题。具体方法包括使用 `malloc` 分配内存和 `memcpy` 或手动赋值。
30 10
|
21天前
|
存储 大数据 编译器
C语言:结构体对齐规则
C语言中,结构体对齐规则是指编译器为了提高数据访问效率,会根据成员变量的类型对结构体中的成员进行内存对齐。通常遵循编译器默认的对齐方式或使用特定的对齐指令来优化结构体布局,以减少内存浪费并提升性能。
|
26天前
|
编译器 C语言
共用体和结构体在 C 语言中的优先级是怎样的
在C语言中,共用体(union)和结构体(struct)的优先级相同,它们都是用户自定义的数据类型,用于组合不同类型的数据。但是,共用体中的所有成员共享同一段内存,而结构体中的成员各自占用独立的内存空间。
|
26天前
|
存储 C语言
C语言:结构体与共用体的区别
C语言中,结构体(struct)和共用体(union)都用于组合不同类型的数据,但使用方式不同。结构体为每个成员分配独立的内存空间,而共用体的所有成员共享同一段内存,节省空间但需谨慎使用。
|
30天前
|
编译器 C语言 C++
C语言结构体
C语言结构体
25 5
|
1月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目