static变量-static静态变量问题,菜鸟求大家伙给个答案

问题描述

static静态变量问题,菜鸟求大家伙给个答案

int main(void)
{
static int i=5;
if(--i)
{
main();
cout<<i<<endl;
}
}
为什么输出结果是0000?
菜鸟求详解啊!么么哒

解决方案

4,3,2,1,0一共5个数,因为0的时候不进if了所以递归终止了,然后返回到上一次递归也就是i=1的时候,但是这时候实际上i的值是0了所以打印0并且换行,以此类推,
i=2的递归,打印 0 换行
i=3的递归,打印 0 换行
i=4的递归,打印 0 换行
所以是4次0

首先你得理解递归的意思

解决方案二:

代码好高级的样子,点在 静态变量和递归;

运行:

i = 5;

if(5) i = 4
进入main
if(4) i = 3
进入main
if(3) i = 2
进入main
if(2) i = 1
进入main
if(1) i = 0
进入main
if(0)
不执行
打印 0 换行
打印 0 换行
打印 0 换行
打印 0 换行
结束

可以使用 gdb 调试
或者 在VC上设置断点调试

解决方案三:

static静态成员变量只在第一次声明时定义。
在以后的函数调用中,实际操纵的都是同一块内存区域,而非其他普通变量的副本。
所以....

时间: 2024-08-24 06:12:41

static变量-static静态变量问题,菜鸟求大家伙给个答案的相关文章

Java 中的 static 使用之静态变量&amp;#183;静态方法&amp;#183;静态初始化块

Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中被 static 修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.静态成员可以使用类名直接访问,也可以使用对象名进行访问.当然,鉴于他作用的特殊性更推荐用类名访问~~ 使用 static 可以修饰变量.方法和

java-JAVA中类的实例变量和静态变量的赋值

问题描述 JAVA中类的实例变量和静态变量的赋值 学完了面向对象,回头看项目的时候在这个地方有些不太透,对于类的实例变量和静态变量如何赋值和访问及修改(所描述的赋值访问及修改可能用词不准确,恳请指正)谢谢!!! 解决方案 楼主亲,你可以通过这样的方式去理解静态变量和实例变量:(1)静态变量也称为类变量,语法上面用static修饰,这样的变量在JVM(Java虚拟机)将类加载进去的时候就和类一起被分配了内存,这个时候就已经可以使用了,而不需要等到创建类的实例后才能使用.这类变量可以直接通过"类名.

JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量

       转载请注明出处:http://blog.csdn.net/xyang81/article/details/42836783        在上一章中我们学习到了如何在本地代码中访问任意Java类中的静态方法和实例方法,本章我们也通过一个示例来学习Java中的实例变量和静态变量,在本地代码中如何来访问和修改.静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过[类名.变量名]来访问.实例变量也称为成员变量(属性),每个实例都拥有一份实例变量数据的拷贝,它们之间修

asp.net中静态变量和非静态变量的区别

静态变量:静态变量使用 static 修饰符进行声明在所属类被装载时创建通过类进行访问所属类的所有实例的同一静态变量都是同一个值非静态变量:不带有 static 修饰符声明的变量称做非静态变量在类被实例化时创建通过对象进行访问同一个类的不同实例的同一非静态变量可以是不同的值示例: [复制到剪贴板]CODE: using System;using System.Collections.Generic;using System.Text;namespace Example01{    class P

php的静态变量和静态方法

静态变量也称为类变量,静态方法也称为类方法. 简单的说,静态变量就是所有对象都共享的变量.静态变量也称为类变量,静态方法也称为类方法. 如何定义静态变量 访问修饰符 static 变量名; 如何访问静态变量: (1)在类外部:类名::$类变量名 (2)在类内部:self::$类变量名或者::$类变量名 例:一群小孩在玩游戏,不时有新的小孩加入游戏.问:如何知道现在有多少小孩在玩游戏,用面向对象的思想来实现. 静态变量与变通变量的区别: (1)加上static称为静态变量或者类变量,否则称为实例变

java-关于静态变量的一段代码

问题描述 关于静态变量的一段代码 package test; public class Circle2 { double radius; static int number0 = 0; Circle2(){ radius = 1.0; number0++; } Circle2(double newRad){ radius = newRad; number0++; } static int getN(){ return number0; } double getArea(){ return rad

java中为什么静态方法里面必须打印静态变量,

问题描述 java中为什么静态方法里面必须打印静态变量, java中为什么静态方法里面必须打印静态变量, 静态方法为什么无法打印普通变量 解决方案 那说明你还是没弄清楚静态和非静态的创建时机,变量有类变量和实例变量,也就是静态变量和非静态变量,类加载的时候就加载类变量也可以说是类自己的变量,而实例变量只有在实例化的时候才被创建,所以在调用静态方法的时候还没有创建实例变量,你怎么能调用实例变量呢 解决方案二: 每个实例变量都有实例成员: class A { public int i; static

java中静态变量和实例变量的区别详细介绍_java

运行效果: 控制台效果: ================================================== 代码部分 ================================================== /hello_test/src/com/b510/test/StaticTest.java 复制代码 代码如下: /**  *   */ package com.b510.test;  /**  * 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实

php 静态变量与自定义常量的使用方法_php基础

⚑ 静态变量的声明与使用 ⚑ 自定义常量的使用方式 什么是静态变量? 静态变量是指用static声明的变量,这种变量与局部变量的区别是,当静态变量离开了它的作用范围后,它的值不会自动消亡,而是继续存在,当下次再用到它的时候,可以保留最近一次的值. 下面举例: 复制代码 代码如下: <?php function add() { static $i=0; $i++; echo $i; } add(); echo " "; add(); ?> 这段程序中,主要定义了一个函数add