`
talentluke
  • 浏览: 604710 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C语言中main函数之前可以进行赋值作吗?

 
阅读更多

这两天用结构模拟面向对象的方法在C语言中编写硬件的驱动程序,涉及到多文件的变量的初始化问题。如下:

       在DS1302.h中定义了一个结构:

       typedef struct{

    void (*fun1);

    void (*fun2);

   }DS1302_T;

  extern DS1302_T ds1302;

  并声明了一个全局变量以供main函数所在的main.c文件调用,并在DS1032.c中定义该变量:

  DS1302_T ds1302;

  随后在DS1032.c中初始化:

  ds1302={fun1,fun2};//其中fun1和fun2为之前定义好的函数,作为结构成员。但在初始化之前却怎么也通不过,提示错误为重复定义。百思不得其解。

  最后用VC新建了一个简单的程序(test.c)

  #include<stdio.h>

  typedef struct{

  unsigned char a;

  }student;  

  student s1;

  s1.a=0;

  void main()

  {

  }

  上述文件编译也通不过,而且提示是一样的,重复定义,仔细思考才发现:原来自己是在main函数之前对变量进行赋值语句操作。main函数之前 是用来声明和定义全局变量和函数的,并由编译器进行预处理,给那些全局变量和定义的函数分配内存和地址,  不能设计可执行代码。

  编译器在编译阶段对main函数之前的全局变量进行内存分配,对定义的函数生成可执行的代码,并保留该函数的地址以供main函数调用,而赋值语句操作是一句可执行代码,又没有类似函数指针的东西供main函数调用,所以只能放在main函数内部进行顺序执行。

  在多文件组织中,只有在包含main函数的源文件里面的main函数内部才能对变量进行赋值语句的操作,而其它不包含main的源文件这不能进行变量的赋值操作,只能进行变量的声明。

  但并不是说在main函数之前就不能对变量进行初始化赋值:可以在定义变量的时候对变量进行初始化赋值。如下:

  int a=10;

  student s1={10};

     这些都是可以。

分享到:
评论

相关推荐

    C语言中关于函数指针的用法

    在C语言中,函数也是一种特殊的“数据类型”,可以被赋值给一个指针变量。这样,我们就可以通过该指针来间接地调用函数。例如: ```c void (*fp)(); // 定义了一个指向无参、无返回值函数的指针 ``` 这里的`void ...

    C语言指针函数和函数指针详细介绍.

    main函数中调用GetDate函数,获取返回的地址值,并将其输出。 二、函数指针 函数指针是指向函数的指针,包含了函数的地址,可以通过它来调用函数。其声明格式为:类型说明符 (*函数名)(参数)。例如: ```c void ...

    如何在C语言的结构体中像类一样封装函数

    在C语言中,我们不能直接在结构体中定义`getArea`这样的成员函数,但可以通过在结构体中包含一个函数指针来实现类似的效果: ```c #include typedef int (*CalcAreaFunc)(struct Rectangle*); struct Rectangle ...

    C语言函数的定义、声明以及函数的调用方法_c语言函数学习实例_

    在C语言中,函数是程序的基本模块,它们可以完成特定的任务并可以被其他代码重复使用。函数的定义、声明和调用是C语言编程中不可或缺的部分。本篇将深入探讨这三个概念,以及如何处理参数传递,特别是数组作为函数...

    C语言中二维数组作为函数参数来传递的三种方法

    C语言中二维数组作为函数参数来传递的三种方法 在C语言中,二维数组作为函数参数来传递是非常常见的操作。但是,如何正确地传递二维数组作为函数参数却是许多初学者和开发者经常混淆的地方。今天,我们将详细介绍...

    C语言函数大全超级完整版

    2. 函数指针:可以将函数地址赋值给指针变量,实现函数作为参数传递或返回值的功能,常用于回调函数和高阶函数。 3. 递归函数:函数内部调用自身,解决复杂问题,但需谨慎使用以避免无限递归。 4. 无返回值函数:用`...

    C语言函数速查 C语言函数大全 C函数

    C语言中的函数指针可以存储函数的地址,使得函数可以作为参数传递或被其他函数返回。例如,`typedef int (*func_ptr)(int, int);`定义了`func_ptr`类型,它指向一个接受两个整数参数并返回整数的函数。 8. 递归...

    C语言回调函数

    ### C语言中的回调函数 #### 一、回调函数的基本概念 在C语言中,回调函数是一种特殊的函数形式,它的特点是将一个函数作为参数传递给另一个函数,并且在适当的时候被后者调用。这种方式使得程序设计更加灵活,...

    C语言中的函数与指针.pdf

    指针是C语言中一个非常重要的数据类型,它存储了变量的地址信息,使得我们可以直接对内存地址进行操作。 1. 指针变量的定义 定义指针变量的基本语法是:类型标识符 *变量名;其中,变量名前的“*”符号表示这是一个...

    c语言函数中的逻辑结构

    【C语言函数中的逻辑结构】在C语言编程中,函数是一种重要的组织代码的方式,它允许我们将复杂的任务分解为更小的、可管理的部分,每个部分都有特定的功能。本课程聚焦于C语言中的函数,旨在帮助学习者理解并掌握...

    c语言函数查询软件

    9. **函数指针**:C语言允许将函数地址赋值给指针变量,这种类型的指针可以作为参数传递或存储在数据结构中,使得函数调用更加灵活。 10. **匿名函数(lambda表达式)**:虽然C语言标准不直接支持匿名函数,但通过...

    C语言 函数小结

    C语言函数小结 函数是一种代码块,能够重复使用,减少代码冗余,...函数是C语言中的基本模块单元,了解函数的定义、调用和使用是深入理解C语言的关键。同时,理解变量的分类、存储方式和特性也是C语言编程的重要方面。

    关于c语言函数大全总结

    - 在C++中可以有同名但参数列表不同的函数,但在C语言中不存在函数重载。 学习并熟练掌握这些C语言函数将极大地提升你的编程能力。通过不断实践和理解,你将能够编写出高效、简洁的C程序。记得,每一个函数都有其...

    C语言中函数的使用

    函数是C语言中的重要组成部分,是代码模块化的关键工具,使得程序设计更加有序和可读。本篇文章将深入探讨C语言中函数的使用,包括其定义、调用、参数传递以及函数指针等核心概念。 首先,我们要理解函数的基本概念...

    C语言中return的作用.pdf

    在C语言中,除了main函数之外,任何其他函数也可以使用return语句来返回值。当调用一个返回非void类型值的函数时,可以通过赋值操作接收其返回值,例如:int value = func();。这里的func()函数使用return返回了一个...

    danfangf ——c语言程序设计精品课件之函数

    `main()`函数是每个C程序的入口点,而其他自定义函数则可以根据需求进行创建,以实现特定任务。例如,一个学生成绩管理系统可能由多个函数组成,分别负责成绩的录入、查询、统计和打印。 7.2 函数的定义和返回值...

    C语言-函数及测试代码

    4. **主函数(main函数)** 在C程序中,`main`函数是程序的入口点。所有的执行都是从`main`函数开始的。`main`函数可以调用其他函数来执行不同的任务。 5. **函数调用** 要执行函数,需要使用函数调用。例如:`...

    c语言函数指针和指针函数.pdf

    在 `main` 函数中,我们使用函数指针 `p` 来调用函数 `f`,并将结果赋值给变量 `a`。 指针函数是指返回类型为指针的函数,例如:`int *f(x, y);`,它返回一个指向整型数据的地址指针。指针函数的应用非常广泛,例如...

    C语言程序设计函数的教学研究.docx

    九、main函数 `main()`函数是C程序的入口点,所有程序执行始于`main()`。 十、函数的优化与性能 合理地组织和使用函数可以提高代码的可读性、可维护性和执行效率。例如,避免过多的函数调用,减少不必要的数据复制...

Global site tag (gtag.js) - Google Analytics