c语言auto定义变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言auto定义变量相关的知识,希望对你有一定的参考价值。

参考技术A 在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字a
u
t
o定义局部变量这一作法保持一致。局部变量仅由其被定义的模块内部的语句所访问。换言之,局部变量在自己的代码模块之外是不可知的。切记:模块以左花
括号开始,以右花括号结束。
对于局部变量,要了解的最重要的东西是:它们仅存在于被定义的当前执行代码块中,即局部变量在进入模块时生成,在退出模块时消亡。
定义局部变量的最常见的代码块是函数。

auto
int
num=1;\\num=1
printf("The
internal
block
num
equal
%d\n",num);\\num=1输出The
internal
block
num
equal
1
num++;\\num=2

这个区域又是一个模块,里面num的对外部num的不影响
参考技术B 语言中包括了关键字auto,它可用于定义局部变量。但自从所有的非全局变量的缺省值假定为auto以来,auto就几乎很少使用了。
在c或者以前的c++中,auto关键字基本上可以被无视:比如这个局部变量:int
a
=
100;auto
int
a
=
100;并没有什么区别。
但是在vc2010中,auto已经有了新的含义,它可以对类型进行推断使得我们在使用的时候可以这样auto
a
=
100;那么a就是int类型,初始值为100。
参考技术C
auto
int
num=1;
printf("The
internal
block
num
equal
%d\n",num);
num++;

这里面的num是个局部变量阿,
这里所有的num
看成是另一个变量就OK
拉。。。。只在此函数中有效
每次调用函数
重新分配空间

北理工c语言单项选择题

1.在函数中,只要说明了变量,就可为其分配存储单元

error:如auto和register类型的变量在定义它的函数被调用时才被分配存储单元

auto:默认的局部变量存储方式,(这种变量定义时在动态存储区被分配空间),使用完毕后(比如函数结束),被系统回收,整个过程是系统管理的,所有称为自动变量

register:寄存器存储方式,(通常变量都被存储在内存里,使用时被读入CPU处理,但这会耗费时间),如果某个变量使用频率极高,如循环控制变量,则可以使用该关键字将这个变量放入CPU内部的寄存器中以提高操作速度,不过,由于CPU寄存器是有限的,所以,(只有自动变量和形参才可以被设置为寄存器变量,而且有数量限制)

static:这个关键字定义的局部变量被放置在静态存储区,即使在函数调用结束后,其内存空间也不会被回收,而且保持原值,这样,下次函数被调用时,访问的仍然是同一个变量,静态变量只在编译阶段初始化一次。虽然static定义的变量不会被回收,但是如果它修饰的是局部变量,所以使用它的只能是定义它的函数,其它函数无法使用

全局变量被存储在静态存储区,分为两种:

内部全局变量区,用static声明,其作用域为本cpp文件,其它文件不能使用

外部局部变量,不加任何声明的全局变量默认为外部全局变量 1.如在本cpp中使用,直接使用n即可,如跨文本使用,需要使用前用extern int n声明一次,这个声明并不会产生新变量

只是说明n在其他cpp中

2.不用参数交换变量x和y的值

func (int *x, int *y)

{

   *x=*x+*y;*y=*x-*y; 

   *x=*x-*y;  

}

3.实现字符串的复制

func(char *s1,char *s2)

{

  while(*s1++=*s2++);

}

4

fgetc():函数返回来自(FILE *)stream流中的下一个字符,如果达到文件尾或者发生错误时返回EOF
rewind()把文件指针移到由stream(流)指定的开始处,同时清除和流相关的错误和EOF标记
ftell:返回stream流的当前位置(long),如果发生错误返回-1
fseek:为给出的流设置位置数据,int fseek(FILE *stream,long offset,int origin)(在stdio.h中定义)
如fseek(fp,-10,1)将文件指针fp从当前位置向文件首方向移动10个字符

将文件(F根目录)f1的内容先在屏幕上显示,然后复制到(F根目录)f2
#include <stdio.h>
#include <stdlib.h>
int main()
{
  FILE *fp1,*fp2;
  if((fp1=fopen("F:\\f1.txt","r")) == NULL)//必须有新文本存在
  {
    printf("Cannot open f1\n");
    exit(0);
  }
  if((fp2=fopen("F:\\f2.txt","w")) == NULL)//文本如无,则创建新的文本
  {
    printf("Cannot open f2\n");
    exit(0);
  }
  while(!feof(fp1))
    putchar(fgetc(fp1));
  rewind(fp1);
  while(!feof(fp1))
  fputc(fgetc(fp1),fp2);
  fclose(fp1),fclose(fp2);
  return 0;
}

5

#include <stdio.h>
void aaa() {printf("hi");}
void bbb(){printf("hello");}
void ccc(){ printf("bye");}
int main()
{
  void (*p[3])() = {&aaa,&bbb,&ccc};//指针数组引用三个函数
  return 0;
}

 

以上是关于c语言auto定义变量的主要内容,如果未能解决你的问题,请参考以下文章

C语言所有变量都默认为auto,全局变量不能为auto,那全局变量默认为啥?

C语言中都有哪些存储类型?

c语言—变量

计算机c语言中auto是啥意思,有啥功能

深谈auto变量

C语言中auto,register,static,const,volatile的区别