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存放在静态数据区,程序运行结束才释放

编译结果:

相关文章
|
2天前
|
算法 Java 程序员
面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性
【6月更文挑战第15天】面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性。封装可使用结构体封装数据和方法,如模拟矩形对象。继承则通过结构体嵌套实现静态继承。多态可通过函数指针模拟,但C不支持虚函数表,实现复杂。C语言能体现OOP思想,但不如C++、Java等语言原生支持。
13 7
|
2天前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
12 7
|
2天前
|
编译器 C语言
【C语言基础】:自定义类型(一)--> 结构体-2
【C语言基础】:自定义类型(一)--> 结构体
|
2天前
|
编译器 Linux C语言
【C语言基础】:自定义类型(一)--> 结构体-1
【C语言基础】:自定义类型(一)--> 结构体
|
3天前
|
C语言
C语言——结构体
C语言——结构体
3 0
|
3天前
|
算法
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
|
3天前
|
算法
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
|
3天前
|
算法
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏
|
3天前
|
算法
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
|
3天前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表