c语言变量作用域问题
c语言中的变量作用域总结
#include<stdio.h>
int main()
{ int a=;
printf(“%d\n”,a);
return ;
}
int main()
{ int a=; //结构体中
{
//首先结构体中是可以访问外层的变量的,这里可以直接访问a;
//printf(“%d\n”,a);
//其实上边在访问a的时候,编译器是会先在当前结构体中找a,如果没有才找外层的a
int a = ;//当然这里这个a只属于当前结构体中,即在大括号结束时,a被销毁,并不会影响外边的a;
printf(“%d\n”,a);//输出1
} printf(“%d\n”,a);//输出还是0
return ;
}
int main()
{
int a = ;
//第一层结构体
{
printf(“%d\n”,a);//输出0
int a = ,b=;
printf(“%d\n”,a);//输出1
//第二层嵌套
{
printf(“%d\n”,a);//输出1
int a = ;
printf(“%d\n”,a);//输出2
}
}
printf(“%d\n”,a);//输出0
//printf(“%d\n”,b);//这个是不能访问的,b在内层结构体中
}
int main()
{
//在for的循环体中定义变量,且循环体只有一条语句,建议任何时候都写大括号
for (int a=; a<; a++)
int b = ;//报错,不能定义变量,要定义只能在大括号中 return ;
}
int main()
{
for(int a=; a<; a++,b++)//这里的b当然是不能访问了,b是在下边的一对大括号中定义的,也就是内层结构体中
{
printf(“%d\n”,a);//依次输出0、1、2,前提上边小括号中的b++删掉
int a = ;//这个重名的a是可以的,在上边定义过a后,循环体重可以继续定义a,这个根据1、2中的结构体来理解
int b = ;
printf(“%d\n”,a);//每次都输出10
}
return ;
}
int test(int num1, int num2)
{
int num1 = ;//这个是不允许的,按照上边的for循环来讲是可以的,但是函数的形参是等待接收实参的值的,并且这个值要在函数体中参与运算的,是一个很有意义的变量,c不允许重新定义与形参同名的变量名以防止这个形参真的没了意义,而for中的a只是让循环继续的一个条件,即使在循环体中重新定义了,每次循环结束后,会被释放,a又回到了原来的值,并不影响循环,所以可以;
return ;
}
c语言变量作用域问题的更多相关文章
- 黑马程序员-- C语言变量作用域与代码块
这里通过变量作用域的两种错误用法来介绍一下C语言变量作用域 其次对代码块的使用进行了简单说明: #include <stdio.h> 1.变量的作用域(作用范围) 变量定义的那一行开始,直 ...
- Go语言【第八篇】:Go语言变量作用域
Go语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围,Go语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量: 函数外定义的变量称为全局变量: 函数 ...
- GO语言学习(十三)Go 语言变量作用域
Go 语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函 ...
- go语言变量作用域
Go 语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函 ...
- Go 语言变量作用域
作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函数定义中的变量称为形式 ...
- Go的变量作用域
Go 语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内部定义的变量称为局部变量 函数外部定义的变量称为全局变量 ...
- OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法
一. 分类-Category 1. 基本用途:Category 分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...
- C/C++语言中变量作用域:局部变量,全局变量,文件级变量
C/C++语言中的变量分为全局变量和局部变量. 这样的划分方式的根据是变量的可见范围或者叫做作用域. 1 局部变量 局部变量指的是定义在{}中的变量,其作用域也在这个范围内.尽管常见的局部变量都是定义 ...
- [转]深入理解JavaScript的变量作用域
1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在整个函数中都有定义. 5.未使用var关键字定 ...
随机推荐
- parseInt在IE8转换返回不相等(parseInt("08")返回0等以0开头大于7的数字串)
描述 在IE8内核下parseInt("08")返回0,等以0开头大于7的数字串返回的值不相等 解决方法 parseInt当不指定radix时,当以0x开头时,s按照十六进制计算的 ...
- JS 数组乱序
因为不想在后台操作,就使用js进行 涉及到了一个打乱数组顺序的方法 百度到的一篇 Author : Jun.lu http://www.cnblogs.com/idche/archive/2010/0 ...
- TransmitFile下载文件(部分转载)
例子代码: public void Down() { TransmitFile(@"/File/KBPub.zip"); } public void TransmitFile(st ...
- 教你21天学会C++ (有图有真相)
这张图,是在一位有十多年开发经验的资深前辈博客里看到的,觉得很有趣,分享之~ 这位大神的博客是:http://coolshell.cn 理论是可行的,当你刚开始学习C++,到第21天的时候出门千万要小 ...
- MySQL中DATE_FORMATE函数内置字符集解析
今天帮同事处理一个SQL(简化过后的)执行报错: 代码如下 复制代码 mysql> select date_format('2013-11-19','Y-m-d') > timediff( ...
- 通过js判断手机访问跳转到手机站
第一种方法: <script> ){ //pc //window.location.href="电脑网址"; }else{ //shouji window.locati ...
- 4月13日学习笔记——jQuery工具函数
浏览器及特性检测 jQuery.support.boxModel 如果这个页面和浏览器是以 W3C CSS 盒式模型来渲染的,则等于 true.通常在 IE 6 和 IE 7 的怪癖模式中这个值是 f ...
- Java 和 Javascript 的 Date 与 .Net 的 DateTime 之间的相互转换
Java 和 Javascript 的 Date 对象内部存放的是从1970年1月1日0点以来的毫秒值. .Net 的 DateTime 对象内部存放的是从0001年1月1日12点以来的tick值,1 ...
- trident 序列号问题
在使用Storm的trident做流计算开发时,遇到一个诡异的问题: 我继承IPartitionedTridentSpout或者IOpaquePartitionedTridentSpout接口做事务型 ...
- VC和VS系列(2005)编译器对双精度浮点溢出的处理
作者:风影残烛 在还原代码的过程中.目前程序是采用VS2005(以上版本)写的. 我使用的是vc6.0,结果.在运算的时候.发现编译器对 // FpuTlxTest.cpp : 定义控制台应用程序的入 ...