C语言/C++编程新手入门基础学习中链接类型

C语言是面向过程的,而C++是面向对象的

C和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_DEMOH

#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;

}

测试文件:

#include

int main(void){

int a = 20;

int b = 30;

printf(‘‘plus:%d ‘‘add(a,b));

return 0;

}

Internal链接属性

头文件

#ifndef __STATIC_DEMOH

#define __STATIC_DEMOH

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++交流群:“648778840”,不管你是小白还是大牛欢迎入住,大家一起交流成长。小编会在群中不定期分享干货源码,包括我精心整理的一份c++零基础教程。欢迎各位感兴趣的的小伙伴。

学习思路:

C语言/C++编程新手入门基础学习中链接类型
学习资料:

原文地址:https://blog.51cto.com/14209412/2375173

时间: 2024-11-09 18:25:05

C语言/C++编程新手入门基础学习中链接类型的相关文章

问题集录--新手入门深度学习,选择TensorFlow 好吗?

新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合OpenCV使用,对于新手来说,基本上不折腾个几天是很难搞定的. 其次,基于TensorFlow的教学资源非常多,中英文的都有,这对于新手也是非常有帮助的.Google做社区非常有一套,在中国有专门的一群人,会在第一时间把Google的开发者相关的进展翻译成中文. 另外,由于有Google背书,Ten

Python入门基础学习 三

Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形,true就相当于1,false相当于0,可以用来计算 类型转换 转换:整数:int();字符串:str();浮点数:float() 转换例子:(图9) 如果用内置函数当变量名,比如str=123,一旦被赋值,再使用这个函数会被报错. type()函数可以明确告诉我们变量类型. isinstance

Java基础学习中一些词语和语句的使用

在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看break和continue使用和运行效果的额说明: break:关键字,可以用于任何循环体控制结构,在循环体内执行时,当执行到break时循环会立即终止,并跳到此循环体以后的语句执行. 列如:输出0--10的数当输出到第六位时就不在继续输出了,即是跳出for循环执行for循环体以后的一句. public

CSS入门基础学习二

我们下午继续学习CSS的入门基础,搬上你的小板凳赶快进入吧! 一.背景(background) Background-color:背景颜色 background-image (背景图片) background-repeat(设置背景平铺)  repeat (默认值) no-repeat (不平铺) repeat-x  (横向平铺) repeat-y (纵向平铺) background-position (设置背景位置) 设置具体值: left| right| top| bottom| cnete

CAD入门基础学习准则分享

初学CAD制图的小伙伴们,我们刚刚开始学习CAD制图的时候,往往不知道从何下手.若是掌握了好的制图技巧,对我们绘制出好的CAD 图纸非常有帮助.下面小编就给大家分享一些CAD入门,基础学习准则.分享如下:1.遵循一定的作图原则①作图步骤:设置图幅→设置单位及精度→建立若干图层→设置对象样式→开始绘图.②绘图始终使用1:1比例.为改变图样的大小,可以在打印时于图纸空间内设置不同的打印比例.③为不同类型的图元对象设置不同的图层.颜色及线宽,而图元对的颜色.线型及线宽都应由图层控制(LAYER):④需

Webpack新手入门教程(学习笔记)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "PingFang TC Semibold"; color: #000000 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0

有关JAVA基础学习中的集合讨论

    很高兴能在这里认识大家,我也是刚刚接触后端开发的学习者,相信很多朋友在学习中都会遇到很多头疼的问题,希望我们都能够把问题分享出来,把自己的学习思路整理出来,我们一起探讨一起成长.    今天我在这里简单讲解一下我对学习中集合的理解.很多朋友再写解释的时候,没有从最简单说起,造成了阅读中的困惑,或许我能帮助你对集合有一个新的认识.   首先当我们谈到集合的时候要了解一下集合的具体概念. java集合的概念是相对于数组来说的,那么什么是数组呢?   数组:数组是一段连续存储单元. 每个存储单

新手入门嵌入式学习单片机?stm32?树莓派?4412开发板资料大汇报-基础了解

ARM+Linux是目前比较吃香的嵌入式软件开发组合,4412开发板是目前嵌入式入门很好的选择,但很多新手对于如何入门嵌入式感觉不知从何下手,本文学习嵌入式软件开发需要具备哪些基本知识 Linux基础 Linux的源码和架构都是开放的,在嵌入式系统中应用尤为广泛,学习Linux对于系统的开发会有很大的帮助.详细了解Linux下的目录结构.基本命令.编辑器VI.编译器GCC.调试器GDB和 Make 项目管理工具,Shell Makefile脚本编写等知识,以及嵌入式开发环境的搭建. 赶快加入吧

Java入门基础学习源码,有C或C++语言基础的可以快速掌握

以下为完整源码,需要1.8版本JDK,否则部分新特性可能出现兼容问题,去掉注释号即可运行 package hello; import java.util.Scanner; public class Hello { public static void main(String[] args) { // TODO 自动生成的方法存根 /* //这是第一个程序 System.out.println("这是一个减法计算器"); Scanner in = new Scanner(System.i