#include <stdio.h>
int a;
a=9;
void main(void)
{
printf("wjf\n");
int a;
a=6;
printf("a=%d,b=%d,c=%d,d=%d",a);
}
"main.c", line 3: cc0077: {D} error: this declaration has no storage class or
type specifier
a=9;
对变量的一般赋值不能放在函数外(只有在定义全局变量时的初始化才被允许),修改如下:
int a;
a=9;
改为
int a=9;
在函数外赋值 就变成了 函数外有了赋值语句。
c/c++ 程序结构不允许。
赋值语句要写在子程序里或主程序main()里。
在函数外,你可以用初始化;在全局中,语句的执行顺序是没有保证的,所以只能在声明的时候定义.
我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益)
变量的声明有两种情况:
1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。
前者是“定义性声明(defining
declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing
declaration)”,从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义,例如:int a
它既是声明,同时又是定义。然而对于 extern a
来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为“定义”,而把不需要建立存储空间的声明称之为“声明”。很明显我们在这
里指的声明是范围比较窄的,即狭义上的声明,也就是说非定义性质的声明,例如:在主函数中:
int main() {
extern int A;
//这是个声明而不是定义,声明A是一个已经定义了的外部变量
//注意:声明外部变量时可以把变量类型去掉如:extern A;
dosth(); //执行函数
}
int A; //是定义,定义了A为整型的外部变量
外部变量的“定义”与外部变量的“声明”是不相同的,外部变量的定义只能有一次,它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多
次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变量的定义点之前)。系统会根据外部变量的定义(而不是根据外部变量
的声明)分配存储空间的。对于外部变量来讲,初始化只能是在“定义”中进行,而不是在“声明”中。所谓的“声明”,其作用,是声明该变量是一个已在后面定
义过的外部变量,仅仅是为了“提前”引用该变量而作的“声明”而已。extern 只作声明,不作任何定义。
(我们声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。)
用static来声明一个变量的作用有二:
(1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在。
(2)外部变量用static来声明,则该变量的作用只限于本文件模块。
相关推荐
### C语言和C++在声明和定义之间的区别 在编程领域,尤其是在学习和使用C语言与C++时,理解和区分“声明”与“定义”的概念至关重要。这两种语言虽然有着密切的联系,但在处理声明和定义方面存在一些重要的差异。...
标题《51单片机C语言变量定义》和描述《51单片机C语言变量定义》揭示了本文档主要围绕51单片机使用C语言进行编程时变量定义的具体知识点展开。51单片机通常指的是基于Intel 8051微控制器架构的一系列微控制器,广泛...
在C语言中使用extern 关键字来定义全局变量的时候,我们需要在.h文件和.c文件中重复定义,这种重复,导致了出错几率的增加。 今天,在整理自己的代码的时候,考虑到我写的代码从一至终都是在一个cpp文件里面。于是,...
C_语言静态变量和静态函数,可以让您对C语言静态变量和静态函数有更清晰的认识
本文涵盖了C语言面试题大汇总之华为面试题,涉及到局部变量、全局变量、extern关键字、for循环、while循环、静态变量、静态函数、内存分配、typedef和struct等知识点,对于C语言学习和面试有重要参考价值。
变量的定义和声明: 声明: 指定变量的名称和数据类型,以便编译器为其分配内存。 定义: 同时声明和初始化变量。 数据类型: C 语言提供了多种基本数据类型,如 int、float、char、double 等。 变量的类型决定了它...
- C语言提供了一些预定义的变量,如`argc`和`argv`,它们在处理命令行参数时使用。 - 宏定义(通过`#define`创建)可以创建符号常量,它们的命名规则类似,但不遵循变量命名规则,因为它们本质上是文本替换。 4. ...
总之,C++的函数声明和定义以及变量声明和定义是程序编译和链接过程中的重要概念,它们保证了编译器和链接器能够正确处理代码中的函数调用和跨文件的变量引用。了解这些概念及其工作原理对于编写高效、可维护的C++...
### C语言变量名命名规则详解 #### 一、程序风格 C语言的程序风格对于保持代码的一致性和可读性非常重要。以下是一些常见的风格指南: 1. **阶梯层次组织程序代码**: - 代码的缩进通常采用每层次4个空格的方式...
### C语言变量声明与初始化:基础与进阶指南 在C语言编程中,变量作为程序中最基本的数据存储单元,其正确的声明与初始化是确保程序高效、稳定运行的关键。本文将全面解析C语言中的变量声明与初始化技巧,涵盖基础...
### C语言中全局变量和局部变量的探讨 #### 引言 C语言作为一种高效、灵活的编程语言,在软件开发领域有着广泛的应用。然而,对于初学者来说,掌握C语言的一些核心概念仍然存在一定的难度,尤其是在处理函数的递归...
变量声明是在代码中告诉编译器变量的存在,包括其名称、数据类型以及(在某些情况下)其作用域。例如,在C语言中,我们可以声明一个整型变量`int num;`。这个声明告诉编译器`num`是一个整型变量,但并未为它分配实际...
全局变量与局部变量是C语言中非常重要的概念,掌握它们的区别和使用场景对于提高编程技能至关重要。通过合理利用这两种变量,我们可以编写出更安全、更高效的代码。同时,正确处理变量的作用域可以帮助避免潜在的...
3.1.1 示例3-1展示了全程生存期和动态生存期的区别,通过for循环打印变量值,可以直观地看到全局变量和局部变量在生命周期上的差异。 3.1.2 变量的作用域: 作用域决定了变量在哪部分代码中可以被访问。全局作用域...
1. **变量声明和定义**:在C语言中,声明变量告诉编译器变量的类型,而定义变量则分配内存空间并初始化。例如,`int i;` 是声明,`int i = 0;` 是定义。如果只声明不定义,那么后续的使用会导致编译错误,因为编译器...
// 变量声明 char add1[] = "www.shellbox.cn"; char add2[] = "www.scriptbox.cn"; int i = 10; // 函数声明 void test1(); void test2(); #endif // TEST_H_ ``` 这种保护机制可以避免由于多次包含同一头文件而...
从提供的文件信息中,我们可以看到文件标题为“也谈二级C语言之变量的定义与特点.pdf”,文件描述与标题相同,表明文档内容与C语言中变量的定义和特性有关。标签指出了文档的领域为C语言、开发技术、编程技术、参考...
以上内容详细解释了结构类型定义和结构变量说明的相关知识点,包括结构体类型的定义、结构变量的声明、结构体内嵌结构体、结构体变量的初始化与赋值等。这些内容对于理解和掌握C语言中的结构体非常重要。
C语言中的变量类型是编程的基础,它决定了变量的存储方式、生命周期和作用域。下面将详细解释这些变量类型: 1. **auto** 变量: - `auto` 是默认的变量类型,通常用于函数内部定义的变量。它们在函数执行时分配...
C语言中static变量声明的作用 在C语言中,static关键字有三个主要作用:隐藏、保持变量内容的持久和默认初始化为0。下面我们将详细解释每个作用。 1. 隐藏作用 static关键字的首要功能是隐藏。它可以使变量或函数...