微信团购群网站怎样做,wordpress 浏览数,it行业网站建设,门户网站开发是什么文章目录 1 变量的声明与定义#xff08;1#xff09;定义与声明的区别#xff1a;#xff08;2#xff09;为什么要区分定义与声明#xff1f;#xff08;3#xff09;extern是什么 ?#xff08;4#xff09;举例#xff1a; 2 函数的声明#xff1a;函数声明的格… 文章目录 1 变量的声明与定义1定义与声明的区别2为什么要区分定义与声明3extern是什么 ?4举例 2 函数的声明函数声明的格式函数声明的本质最后 1 变量的声明与定义
1定义与声明的区别
变量定义是为变量分配内存空间并赋予初始值
变量声明是向程序表明变量的类型与名字
定义也是声明但声明不是定义
在程序中我们可以声明多次但只能定义一次这就好比我们可以使用很多次锤子但是锤子只有一把2为什么要区分定义与声明
程序员们编写程序时不会将程序全部写在一个.c文件中(这样不能使程序员们同时进行编码
且代码可读性很差)
而是存放在多个文件中去 如果我们想引用其他文件定义的变量函数则需要用到声明声明的作用即
告诉
编译器有这个函数或变量可以调用而在链接阶段使程序去查找变量或函数的定义。3extern是什么 ?
extern是C/C中的一个关键字用于声明一个全局变量或函数表示该变量或函数是在其他文件中定义的。
它的作用是告诉编译器该变量或函数的定义在其他地方而不是当前文件中。具体来说extern可以用于以下两种情况声明全局变量当在一个文件中声明一个全局变量时如果该变量是在其他文件中定义的
就需要使用extern关键字进行声明。这样编译器在编译时就知道该变量是在其他文件中定义的并且可以正确地链接到该变量的定义处。声明外部函数当在一个文件中调用一个函数时如果该函数是在其他文件中定义的也需要使用extern关键字进行声明。这样编译器在编译时就知道该函数是在其他文件中定义的并且可以正确地链接到该函数的定义处。总结一下extern关键字用于声明全局变量或函数的定义在其他文件中。
它的作用是告诉编译器该变量或函数的定义在其他地方以便正确地链接到定义处。4举例 #include 包含文件的功能本质上即是声明这与extern的功能相同所以二者选其一即可 在声明时我发现在VS2022上不用extern关键字也行比如直接声明int b
2 函数的声明
在c语言中默认的情况是只能定义在后的函数调用定义在前的函数#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
int Add(int x, int y) {return x y;
}
int main() {int a 3, b 5;int c Add(a, b);printf(%d\n, c);return 0;
}如果调用定义在后的函数则在c标准编译器中会报错(gcc编译器中只会报警告)
如果想调用定义在后的函数,则需要用对应的函数声明(被调用函数的) 如果将main函数与Add函数的位置调换
int main() {int a 3, b 5;int c Add(a, b);printf(%d\n, c);return 0;
}
int Add(int x, int y) {return x y;
}
函数声明的格式
//int Add(int x, int y);
//声明的格式是
//返回值类型 函数名(形参类型 形参名 ....);
//声明放在定义在前的函数之前c
#includestdio.h
int Add(int x, int y);
int main() {int a 3, b 5;int c Add(a, b);printf(%d\n, c);return 0;
}
int Add(int x, int y) {return x y;
}函数声明的本质
//声明的本质是什么
//声明可以看作告诉编译器所调用的函数存在函数的基本信息是什么
(返回值类型函数名等等)
// 而不会去探究函数体是什么是否定义在链接阶段才会去查找
声明函数的函数体如果函数并不存在
,则会在链接阶段报错而解决问题就是添加上对应的函数定义例如
#includestdio.h
int Add(int x, int y);int main() {int a 3, b 5;int c Add(a, b);printf(%d\n, c);return 0;
} 结果表明是链接阶段出现错误
最后
函数的声明并不仅仅用于定义在前的函数调用定义在后的函数 也用于引用其他文件中函数比如include 包含头文件本质上就是声明的一种 例子 或者
//#includeAdd.h
//上面与下面的语句本质相同均是声明
int Add(int x, int y);
#includestdio.h
int main() {int a 3, b 5;int c Add(a, b);printf(%d\n, c);return 0;
}
# 2