没有合适的资源?快使用搜索试试~ 我知道了~
首页C++中的extern声明变量详解
extern声明变量无外乎如下两种: 1、声明全局变量 2、声明函数 今天我们只谈extern,什么const、static之类等等与之相关或不相关的一律忽略,下面就分别对以上两种情况一一讲解 声明和定义 既然提到extern声明变量,那我们就必须搞清楚声明和定义的区别。 这里我们将普通数据变量和函数统称变量。从内存分配角度来说,声明和定义的区别在于声明一个变量不会分配内存,而定义一个变量会分配内存。一个变量可以被声明多次,但是只能被定义一次。 基于以上前提,我们可以把声明和定义类比为指针和内存的关系。我们知道,指针其实就是指向内存的一个符号,变量的定义就好比一块内存区域,而声明就好比它的指针
资源详情
资源评论
资源推荐

C++中的中的extern声明变量详解声明变量详解
extern声明变量无外乎如下两种:
1、声明全局变量
2、声明函数
今天我们只谈extern,什么const、static之类等等与之相关或不相关的一律忽略,下面就分别对以上两种情况一一讲解
声明和定义声明和定义
既然提到extern声明变量,那我们就必须搞清楚声明和定义的区别。
这里我们将普通数据变量和函数统称变量。从内存分配角度来说,声明和定义的区别在于声明一个变量不会分配内存,而定义
一个变量会分配内存。一个变量可以被声明多次,但是只能被定义一次。
基于以上前提,我们可以把声明和定义类比为指针和内存的关系。我们知道,指针其实就是指向内存的一个符号,变量的定义
就好比一块内存区域,而声明就好比它的指针,可以有多个指针指向同一个内存区域,而一个指针只能指向一个内存区域,这
样就很好理解为什么变量只能被定义一次,如果被定义多次,那就会分配多个内存,这样你通过变量的声明到底去找哪块内存
区域呢,这会是个问题。
对于数据来说,声明和定义往往是同时存在的,比如下面的一行语句
代码如下:
int data;
这样既声明了data同时也定义了data,怎样做到只声明而不定义呢,用extern就可以了
代码如下:
extern int data;
对于函数来说,声明和定义就很容易区分了,一般我们会将声明放在头文件而将定义放在源文件里
代码如下:
void hello();
这是一个函数的声明,而
代码如下:
void hello()
{
printf(“hello world!\n”);
}
这是一个函数的定义。当然,函数的声明和定义也可以同时发生,如果我们没有头文件而只有源文件,并且在源文件里并没有
void hello();这样的语句,那么这个函数的声明和定义就同时发生了,此时如果我们在原文件里想要调用函数hello(),你调用的
代码必须在函数定义之后。
其实上面的要点只在于一句话:使用变量之前必须声明,声明可以有多次,而定义只能有一次。记住这句话,后面的就都很容
易理解了。
extern声明全局变量声明全局变量
我们先来看如下例子,现有三个文件:test.h, test.cpp, main.cpp,其中main.cpp和test.cpp需要共享一个变量g_name,三个
文件的内容如下
代码如下:
/* test.h */
#ifndef _TEST_H_
#define _TEST_H_
#include <string>
std::string g_name;
void hello();
#endif
/* test.cpp */
#include <stdio.h>
#include “test.h”
void hello()
{
printf(“hello %s!”, g_name.c_str());
}
/* main.cpp */


















weixin_38519387
- 粉丝: 3
- 资源: 931
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0