我是靠谱客的博主 漂亮蓝天,最近开发中收集的这篇文章主要介绍C语言变量的声明与定义,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       跟同事讨论代码时,经常冒出声明一个变量、定义一个变量的话。虽然感觉没什么差别,但总是混淆不清,心里难受。查下资料,总结做个笔记总是没错的。

一:两者的定义

  • 变量定义

           用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。

  • 变量声明

           用于向程序表明变量的类型和名字,一个变量可以有多个声明。在C语言中,所有的变量都必须先声明后使用。可以用extern这个关键字来声明已经定义的变量。

二:两者的区别

  • 定义是特殊的声明,它为对象分配内存。声明没有分配内存,这是最大的区别。
  • 声明不一定是定义,定义一定包含声明。声明的变量名字已经匹配到一块内存上了,描述其他地方的创建的对象。
  • 一个变量只能定义一次,但可以多次声明。

三:代码演示

这边创建main.c、test.c、test.h三个文件进行演示。

main.c

#include<stdio.h>
#include "test.h"
/*
* 声明变量d, 变量d在test.c里面定义,在这边或者test.h声明,
* 才能在main.c里面调用。不声明的话,编译会失败,声明不分配内存。
*/
extern int d;
void main()
{
int a = 10;
/* 定义且声明变量,同时进行初始化,系统有分配内存 */
int b;
/* 定义且声明变量,但不进行初始化,系统有分配内存 */
b = 20;
printf("a = %d, b = %dn", a, b);
fun_test();
printf("c = %d, d = %dn", c, d);
}

test.c

#include<stdio.h>
int c = 30; /* 定义且声明变量,同时进行初始化,系统有分配内存 */
int d;
/* 定义且声明变量,但不进行初始化,系统有分配内存 */
void fun_test()
{
d = 40;
printf("hello test, c = %d, d = %dn", c, d);
}

test.h

#ifndef TEST_H
#define TEST_H
extern int c;
/* 声明变量c, 系统没有分配内存 */
extern void fun_test(); /* 声明函数fun_test */
#endif

 

编译执行

laiguoliang@earth:~/test/extern$ ls
main
main.c
test.c
test.h
laiguoliang@earth:~/test/extern$ ./main
a = 10, b = 20
hello test, c = 30, d = 40
c = 30, d = 40
laiguoliang@earth:~/test/extern$

 

最后

以上就是漂亮蓝天为你收集整理的C语言变量的声明与定义的全部内容,希望文章能够帮你解决C语言变量的声明与定义所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部