最近因为工作需要开始重新学c语言,越学越发现c语言深不可测,当初用python轻轻松松处理的一些数据,但是c语言写起来却异常的复杂,这个板块就记录一下我的c语言复习之路
本节tips来自小甲鱼的c语言课程的演示笔记小甲鱼b站视频
举例:
#include int main(int argc, char* argv[])
{int i = 100;{int i = 200;{int i = 300;printf("%d\n", i);}{int i = 400;printf("%d\n", i);}printf("%d\n", i);}printf("%d\n", i);return 0;
}
输出结果:
300
400
200
100
举例:
#include void func(void);int main(int argc, char* argv[])
{extern int count;func();count++;printf("count = %d\n", count);return 0;
}int count;
void func(void)
{count++;printf("func's count = %d\n", count);
}
举例:
void func(int a, int b, int c);
void func(int d, int e, int f)
{...
}
即声明的形参名字可以和函数定义的形参名字不一样
函数作用域只适用于goto语句的标签,作用将goto语句的标签眼制在同一个函数内部,以及防止出现重名标签。
链接属性主要分为以下三大类
external(外部的)
多个文件中声明的同名标识符表示同一个实体
internal(内部的)
单个文件中声明的同名标识符表示同一个实体
none(无)
声明的同名标识符被当作独立不同的实体
只有具备文件作用域(函数名和全局变量)的标识符才能拥有external或internal的链接属性,其他作用域的标识符都是none属性
默认情况下,具备文件作用城的标识符拥有external属性。也就是说该标识符允许跨文件访问。对于external属性的标识符,无论在不同文件中声明多少次,表示的都是同一个实体。
例子(利用extern进行多文件变量共享):
main.c
#include void a();
void b();
int count = 0;int main(int argc, char* argv[])
{a();b();printf("%d", ++count);
}
a.c
//
// Created by zh006 on 2022/11/26.
//extern count;void a()
{count++;
}
b.c
//
// Created by zh006 on 2022/11/26.
//extern count;
void b()
{count++;
}
cmakelist.txt
cmake_minimum_required(VERSION 3.21)
project(c C)set(CMAKE_C_STANDARD 99)add_executable(c main.c a.c b.c)