C语言/C++编程新手入门基础学习中链接类型
C语言是面向过程的,而C++是面向对象的
C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
什么叫链接属性,
在C语言的编译过程中有一个步骤叫做链接,链接的作用就是将外部的函数库通过链接形式,变成二进制的可执行文件,那么,就是不同文件之间的关系。而这里的链接其中的一个含义就是函数或者变量在不同文件中是怎么相互调用的;
下面讲一下C语言中几种链接类型:
外部链接External,对应的关键字为extern 内部链接Internal,对应的关键字为static None,对应的关键字为auto
外部链接extern
允许外部文件调用非本文件的函数或者变量,或者在本文件中,函数执行在定义之前的时候,使用extern进行提前声明的话,编译时候不会报错———–>类似java中的public
内部链接static
用static修饰的变量或者函数的链接属性为其作用领域只能仅限在本文件中 ,在其他文件中就不能进行调用,不同文件中的内部函数是不会相互干扰的——–>类似java中的private
None
使用auto进行定义的变量,其作用域仅限在当前的函数中,夸函数则不能够进行调用
External代码使用
/**
*extern1使用
*/
#include
int main(void){
extern int a,b;//定义在使用之前,那么这个时候需要用extern来修饰。表示链接
printf("plus:%d ",a,b);
return 0;
}
int a = 10,b = 20;
/**
*extern2使用
*/
头文件
#ifndefine __EXTERNAL_DEMO_H_
#define __EXTERNAL_DEMO_H
//在头文件声明的时候用extern来修饰
external int add(int a,int b);
#endif
实现文件external_demo.c
#include "external_h.h"
//在文件内部进行使用,外部文件不能访问
static int num = 20;
//用于外部文件调用,用extern来修饰
extern int add(int a, int b){
return a+b;
}
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
测试文件:
#include
int main(void){
int a = 20;
int b = 30;
printf("plus:%d "add(a,b));
return 0;
}
Internal链接属性
头文件
#ifndef __STATIC_DEMO_H_
#define __STATIC_DEMO_H_
int add(int a, int b);
#endif
#include "staticDemo.h"
#include
//静态static修饰的函数声明,只能在staticDemo中去使用
static void out_result(int);
//静态static修饰的变量,只能在本文件中使用,外部文件无法访问
static int num = 50;
//缺省默认是extern修饰的,外部是可以进行访问的
int add(int a,int b){
int plus = a + b;
out_result(plus);
return plus;
}
static void out_result(int result){
printf("out_result:%d ",result);
}
#include
#include"staticDemo.h"
int main(void){
int num1 = 10;
int num2 = 20;
add(num1,num2);
return 0;
}
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
总结一下:
用extern来修饰的函数或者变量,外部文件可以调用或访问。
用static修饰的函数,只能在本文件内部进行使用,外部不能访问
使用auto修饰的变量只能本函数内部进行使用,外部不能调用或者访问,修饰函数默认缺省的时候外部文件是可以进行访问调用的、
链接属性的理解对于我们后面将项目分成很多模块是很有帮助的,每个模块之间都是通过链接形式,形成一个大的文件,什么允许外部访问,什么不允许外部进行访问,作为一个程序猿来说,是要有一定辨别能力的
这些是C/C++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等
这些是C/C++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等