C语言定义和声明区别

本文详细介绍了C语言中变量和函数的定义与声明的区别,以及强符号和弱符号的概念。通过实例说明了多个强符号和弱符号在程序中的行为,并指出结构体的定义与变量定义的不同。重点强调了定义与声明是否分配内存的本质区别,以及避免在头文件定义全局变量以防止重定义的问题。
摘要由CSDN通过智能技术生成

1. 变量的定义和声明

C语言定义和声明分为变量的定义和声明和函数的定义和声明。由于,函数是具有全局外部特性,并且函数的定义和声明区别是很明显的。其声明需要返回值类型,函数名和参数列表。而函数的定义需要函数体。所以,很容易区别函数的声明和定义。对于变量的声明和定义,就不是那么明显。通常变量定义和声明的区别是有没有为变量分配内存。如果为变量分配内存就是定义,否则就是声明。变量声明可以出现多次,但定义只能出现一次。

2. 强符号和弱符号

强符号:函数和初始化的全局变量称为强符号。

弱符号:  未初始化的全局变量称为弱符号。

在程序中,强符号只能出现1次,弱符号会出现多次。如果存在一个强符号和多个弱符号,gcc会选择强符号。如果存在多个弱符号,会选择其中一个弱符号作为定义,并分配内存。

3. 实例

实例1:多个强符号

三个文件test11.h, test11.c和test22.c,具体如下:

test11.h:

#ifndef _TEST1_H
#define _TEST1_H
#include <stdio.h>
int i=1; //此处i是定义,是强符号
void printmsg();
#endif

test11.c

#include "test11.h"
void printmsg(){
  printf("i=%d\n",i);
}

test22.c


                
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值