本文目录一览:
- 1、C语言,关于局部变量重名的问题。
- 2、C局部变量和宏定义重名
- 3、c语言中为什么函数不能重名?请举个函数重名的例子,谢谢
- 4、c语言同名函数问题
- 5、如何在C语言编程里面修改源文件名字
- 6、C语言中同名源文件问题
C语言,关于局部变量重名的问题。
对于这道题你可以由外向内这样分。
单个文件中分为3个级别的空间:
函数外一个空间:全局变量,具有静态存储,从定义出到这个文件结尾范围的函数可以使用
函数内:自动变量,离开函数就释放
复合体(大括号内):自动变量,离开大括号就自动释放
说明:大致上就是这3部分,内和外有同名的,内将屏蔽外部变量。但是在同一级上的同名将导致出现多次定义的错误
多个文件涉及:只能有一个定义的外部链接
(c++的话还有类和名称空间)
你的第一个例子2个x的定义都是在main函数内的同一级上,重复定义。
第二个例子int x=3只能在大括号中生存,而且屏蔽了x=1的那个定义。
C局部变量和宏定义重名
是可以重名的,只不过局部变量可以覆盖全局的,就是在局部变量的范围内全局变量不起作用
局部会屏蔽全局。要用全局变量,需要使用 "::" ;
局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些
编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那
个局部变量的作用域就在那个循环体内。
扩展资料
C语言中全局变量和局部变量的区别是他们的作用域不同,全局变量是整个C程序,局部变量是定义所在的大括号内,同一个作用域内不能定义两个同类型同名的变量,因为编译会报错。
由1个或者多个C文件组成的工程中,可以定义和全局变量同名同类的局部变量,但是不提倡这样使用,因为此时变量的值和变量被调用的位置有关系。
使用全局变量时,需要先用extern关键字声明,全局函数也是用相同的关键字。
c语言中为什么函数不能重名?请举个函数重名的例子,谢谢
可以重名,不过函数的参数类型或数量要不一致,例子如下:
//递归求阶乘
int calc(int num){
if(num==0){
return 0;
}else{
return num*calc(num-1);
}
}
//递归求任意一个整数的整数次方
int calc(int num,int count){
if(num==0){
return 0;
}else if(count == 0){
return 1;
}else{
return num*calc(num,count-1);
}
}
这两个函数方法名称完全一样,但是参数不一样,这种做法有一个叫法,叫函数的重载
c语言同名函数问题
这不是两个函数,这是一个函数,extern "C" int listid(int id, OUT *);
中的extren通知编译器int listid(int id, OUT *)不在本源代码中实现,
"c"通知编译器用C调用方式调用在另外的一个源程序的函数,
C语言默认的调用方式就是C调用 C++就不同了,,所以最好加个"c"
另:调用方式规定了调用的时候输入参数的顺序和函数返回后输入参数占用的空间由调用程序释放还是由函数释放。这东西不一定要太懂,知道用"c"去考虑调用方式就可以了.
参数不同也是可以的,但是执行一定会有错误,而且应该不能出现同名不同参数的的令一个函数。要不连接的时候就找不到正确的函数。
如何在C语言编程里面修改源文件名字
C修改文件名:使用rename函数。
rename函数:功能描述: 改变文件的名称或者位置,如果目标已存在,将被自动覆盖。 用法: #include stdio.hint rename(const char *oldpath, const char *newpath);参数:
oldpath:旧文件名。 newpath:新文件名或者新位置。
具体可以分以下2种情况:
1、修改单个文件
直接使用rename即可。
2、批量修改文件(如:按一定规则修改某目录下所有文件)
需要使用opendir遍历目录,然后修改该目录下文件。下面提供一个简单的例子。
void ModFilesName(const char *pcszPath)
{
char szPathFile[1024] = {0}; //路径+文件名
DIR *dir_p;
struct dirent *direntp;
struct stat entryInfo;
//文件目录不存在,则创建
if(stat(pcszPath, entryInfo) 0)
{
printf("Auto create folder:%s\n", pcszPath);
mkdir(pcszPath, 0755);
}
if ((dir_p = opendir (pcszPath)) == NULL)
{
return;
}
while ((direntp = readdir (dir_p)) != NULL)
{
//组合完整路径
sprintf(szPathFile, "%s/%s", pcszPath, direntp-d_name);
//判断文件是否是目录
if(lstat(szPathFile, entryInfo) == 0)
{
if(S_ISDIR(entryInfo.st_mode))
{
continue; //忽略目录
}
rename(szPathFile, 你要修改成的文件名);
}
} // while ( ...
closedir (dir_p);
}
推荐一片文章:
希望能帮助到你,你的好评是我前进的动力!谢谢!
C语言中同名源文件问题
这是属于自定义函数和函数头
.c文件是由工程管理系统加入的,加入的时候要选择是哪个路径中的.c,这个不会混淆
.h文件由于事自定义的头,因此不用尖括号引用,一般用双引号;自定义头文件路径可以在工程设置中修改,也可以这样写(假定自定义头文件目录为c:\dir0,实际源文件目录为c:\dir0\dir1和c:\dir0\dir2):#include "dir1\a.h" 也可以写绝对路径 #include "c:\dir0\dir1\a.h"