每日面试题
局部变量能否与全局变量重名?
能,局部变量会屏蔽全局变量,要使用全局变量,需要使用“::”,局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。例如:
#include <bits/stdc++.h>
using namespace std;
int a = 10;
int main()
{
int a = 20;
cout << a << ' ' << ::a;
}
运行结果:
20 10
如何引用一个已经定义了的全局变量
①用extern关键字方法
②用引用头文件方式,前提是其中只能有一个C文件对此变量赋初值,此时连接不会出错。
// file1.c
int global_var = 10; // 全局变量定义
// file1.h
#ifndef FILE1_H // 包含守卫,防止头文件被重复包含
#define FILE1_H
extern int global_var; // 声明全局变量
#endif // FILE1_H
// file2.c
#include "file1.h" // 包含声明了全局变量的头文件
void my_function() {
printf("The value of global_var is: %d\n", global_var); // 引用全局变量
// ...
}
每日算法
若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。
假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。
class Solution {
public:
void deleteNode(ListNode* node) {
node->val = node->next->val;
node->next = node->next->next;
}
};