广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中定义与声明有哪些区别
  • 521
分享到

C语言中定义与声明有哪些区别

2024-04-02 19:04:59 521人浏览 安东尼
摘要

目录一、变量的声明与定义二、函数的声明与定义三、总结一、变量的声明与定义 首先,举个简单的例子: int a; extern int b; 这里的两个变量,哪个是声明?哪个是定义?

一、变量的声明与定义

首先,举个简单的例子:

int a;
extern int b;

这里的两个变量,哪个是声明?哪个是定义?

为解决这个问题,我们必须要知道声明与定义的含义。

声明:声明是用来告诉编译器变量的名称和类型,而不分配内存。

  • 告诉编译器,这个变量或者对象已经匹配到一块内存空间上了,下面代码中用到的变量或者对象会在别的地方定义,但此处并不分配内存,所以声明可以出现多次;
  • 告诉编译器,这个名字已经被预定了,别的地方不能再用它作为变量或者对象名。这种声明最典型的例子就是函数参数的声明。

定义:就是编译器为一个变量或者对象分配到一块内存空间上,并给它取名字。这个名字就是变量名或对象名,所以同一名字的变量或者对象只能被定义一次,当多次被定义的时候,编译器就会提示重复定义同一变量或对象的错误。

定义是为了给变量分配内存,可以为变量赋初值。

在上述代码中,extern 是一个关于声明的关键字,放在变量或者函数前用于声明,用来说明”此变量或者函数在别处定义“。

注意的是:即使使用了extern,如果给变量附了值,就是定义了。

我们现在知晓了声明和定义的含义,那么对于上面的例子,我想答案早已浮出水面。

int a;			//此语句为定义
extern int b;	//此语句为声明

示例:

extern int a;		//此语句为声明
extern int b = 10;	//此语句为定义
typedef int INT; 	//此语句为声明
struct node; 		//此语句为声明
int c ;				//此语句为定义
struct Node {		//此语句为定义
    int left;
    int right;
};

上述代码中,变量名c,其类型为int,配分4字节的内存空间(不同编译器可能会有差异)。

二、函数的声明与定义

首先,我们同样先了解一下它们的含义

函数声明:告诉编译器,函数的名称、参数类型和数量以及函数返回值的类型。

函数定义:为了给函数分配内存空间。

例如:

int Max(int x, int y);	//此处声明了一个函数,其函数名为Max,参数为int x,int y,返回类型为int
int Max(int x, int y) {return x > y ? x : y;}	//此处定义了一个函数

函数的定义包含了函数的具体实现。

函数只要有实现(存在函数体{…})即为定义,否则为声明。

注:为什么这里的函数声明不用写extern?函数一般是全局的,即他的可见性是最大范围的,在别的文件也可以访问这个函数,其实函数默认就是extern,所以可以不写。

另外,当在函数前加static 时,则函数的作用域仅局限于本文件。

再来看一段代码


#ifndef _BASIC_STDY_H_
#define _BASIC_STDY_H_
//extern int a;		//在头文件中声明,必须加上extern,否则就是重定义
//void fun();		//不用加extern也可以
#endif

#include"basic_stdy.h"
#include<iOStream>
using namespace std;
int a(2);
void fun(){
            cout << a <<endl;
}

#include<iostream>
//#include "basic_stdy.h"
using namespace std;
extern int a;		//ok不用包含头文件, 变量只要声明即可
extern void fun();	//ok不用包含头文件, 函数只要声明即可
int main(int arGC,char **argv){
	cout << a << endl;
	fun();
	system("pause");
	return 0;
}

上述代码中一共有三个文件basic_stdy.h、basic_stdy.cpp和main.cpp,要在main.cpp中使用其他文件中定义的变量和函数,有以下两种实现方式:

1、在basic_stdy.h头文件中,声明他们,然后在main.cpp中去包含头文件;

2、在main.cpp中直接extern。

三、总结

  • 变量或函数可以声明多次,但变量或函数的定义只能一次;
  • 声明不会分配内存,定义会分配内存;
  • 声明是告诉编译器变量或函数的类型、名称等,而定义是告诉编译器变量的值,函数的具体实现。

到此这篇关于C语言中定义与声明有哪些区别的文章就介绍到这了,更多相关C语言定义与声明内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言中定义与声明有哪些区别

本文链接: https://www.lsjlt.com/news/153707.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中定义与声明有哪些区别
    目录一、变量的声明与定义二、函数的声明与定义三、总结一、变量的声明与定义 首先,举个简单的例子: int a; extern int b; 这里的两个变量,哪个是声明?哪个是定义?...
    99+
    2022-11-13
  • C语言中定义与声明有什么区别
    今天小编给大家分享一下C语言中定义与声明有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、变量的声明与定义首先,举...
    99+
    2023-07-02
  • c++声明和定义有什么区别
    在C++中,声明和定义是不同的概念。声明(Declaration)是指在程序中引入一个变量、函数或类的名称,告诉编译器它的存在和类型...
    99+
    2023-08-16
    c++
  • c语言与go语言的区别有哪些
    小编给大家分享一下c语言与go语言的区别有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!区别:1、C语言源文件的扩展名是“.h”和“.c”,Go语言源文件的扩展名是“.go”。2、C语言中通过文件来管理代码,Go语言中...
    99+
    2023-06-06
  • java与c语言的区别有哪些?
    java与c语言的区别有哪些?1、Java与C内存分配不同:Java中内存分配五个区,分别为栈区(存储的是局部变量,使用完毕,立即回收),堆区(存储的是new出来的东西,实体,对象,每一个对象都有地址值,每个对象的数据都有默认值,使用完毕后...
    99+
    2020-10-28
    java教程 java c语言
  • c语言与javascript的区别有哪些
    这篇文章给大家分享的是有关c语言与javascript的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 区别:1、C语言主要是被编译成机器语...
    99+
    2022-10-19
  • python与C语言的区别有哪些
    python与C语言的区别有:1、python属于动态、强类型类型语言,而C属于静态类型语言;2、python主要是面向对象,而C中没有对象这个概念,只有“数据的表示”;3、两者的变量类型不同,Python六个标准的数据类型,分别是Numb...
    99+
    2022-10-05
  • C语言关键字及变量怎么定义与声明
    这篇“C语言关键字及变量怎么定义与声明”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言关键字及变量怎么定义与声明”文章吧...
    99+
    2023-07-02
  • 编程中声明和定义有什么区别
    这篇文章主要为大家展示了“编程中声明和定义有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“编程中声明和定义有什么区别”这篇文章吧。一般解释来说:声明是告诉编译器存在这么一个标识符。定义则...
    99+
    2023-06-17
  • c语言函数声明的方法有哪些
    在C语言中,函数声明的方法有以下几种:1. 在函数使用之前,将函数的原型放在函数调用之前。例如:```cint add(int a,...
    99+
    2023-08-08
    c语言
  • C语言和C#有哪些区别
    这篇文章主要介绍“C语言和C#有哪些区别”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言和C#有哪些区别”文章能帮助大家解决问题。C#是三大主流OOP(面向对象编程)语言(C++,Java,C#...
    99+
    2023-06-27
  • javascript和c语言有哪些区别
    本篇内容主要讲解“javascript和c语言有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript和c语言有哪些区别”吧! ...
    99+
    2022-10-19
  • java和c语言有哪些区别
    java和c语言的区别有:1.语言类型不同;2.通用性不同;3.数据类型不同;4.文件组织方式不同;5.应用领域不同;java和c语言的区别有以下几点语言类型不同java是一种面向对象的语言,执行效率高;而c语言是一个面向过程的语言。通用性...
    99+
    2022-10-10
  • 汇编语言和c语言的区别有哪些
    本文小编为大家详细介绍“汇编语言和c语言的区别有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“汇编语言和c语言的区别有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别:1、因为汇编语言实质上是机器语言...
    99+
    2023-07-04
  • php和C语言的区别有哪些
    php和C语言的区别有:1、两者性质不同,php是一种通用开源脚本语言,而C语言是一门通用程序设计语言;2、特点不同,php拥有自己独创的语法,而C语言能以简易的方式编译以及处理低级存储器;3、两者优势不同,php具有较高的数据传送处理水平...
    99+
    2022-10-07
  • C语言中scanf和printf的区别有哪些
    这篇文章将为大家详细讲解有关C语言中scanf和printf的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。区别:scanf是输入函数,用于从标准输入设备(一般是键盘)输入数据;而printf是...
    99+
    2023-06-14
  • c语言中abs()和fabs()的区别有哪些
    这篇“c语言中abs()和fabs()的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“c语言中abs()和fabs...
    99+
    2023-06-17
  • c语言中*p和p的区别有哪些
    这篇文章主要讲解了“c语言中*p和p的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c语言中*p和p的区别有哪些”吧!区别:1、表示的含义不同,“*p”表示此指针指向的内存地址中存...
    99+
    2023-07-04
  • php的语法和c语言有哪些区别
    这篇文章将为大家详细讲解有关php的语法和c语言有哪些区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。语法上的区别:1、PHP使用define函数来定义常量,c语言不是;2、php的所有的变量名前都要带...
    99+
    2023-06-14
  • 自然语言与编程语言的区别有哪些
    自然语言与编程语言的区别有以下几个方面:1. 表达方式:自然语言是人类用来交流的语言,它通常以自然的语法、词汇和语境为基础,并且允许...
    99+
    2023-10-09
    自然语言 编程语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作