为什么声明了int型的变量并且直接初始化后,int型变量的地址一直在变化?

 1 /*************************************************************************
 2     > File Name: ptr_variable.c
 3     > Author: Mr.Yang
 4     > Purpose:演示指向变量的指针
 5     > Created Time: 2017年06月03日 星期六 08时47分33秒
 6  ************************************************************************/
 7
 8 #include <stdio.h>
 9 #include <stdlib.h>
10
11 int main(void)
12 {
13         int a = 1000;
14         printf("a的地址为:%d\n",&a);
15
16         char *p;
17         puts(p);
18         printf("指针p的地址为:%d\n",&p);
19
20         return 0;
21 }

执行结果:

这个地址的变应该怎么理解,对于没有初始化的变量来说,地址变可以理解,但已经初始化的变量地址还是一直变,应该怎么理解呢?

时间: 2024-11-02 00:00:43

为什么声明了int型的变量并且直接初始化后,int型变量的地址一直在变化?的相关文章

Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)

1.执行顺序 1.1.一个类中的初始化顺序 (静态变量.静态初始化块)=>(变量.初始化块.构造器). 1.2.两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)=> 子类的(静态变量.静态初始化块)=> 父类的(变量.初始化块.构造器)=> 子类的(变量.初始化块.构造器). 示例如下:(结果见注释) 1 class A { 2 public A() { 3 System.out.println("Constructor A."); 4 } 5

如何让JS变量和字符串拼接后,是变量而不是字符串

今天有个非常有趣的事,因为我需要用JS去实现多语言,就是我在JS文件里定义了不同的变量,尝试用变量拼接字符串组成之前定义好的变量名称,结果拼接之后,显示的却是字符串,而不是变量,所以无法解析 zh_test = '你好'; tw_test = ‘你好’; en_test = 'Hello'; // 然后再JS里尝试将前面的语言简写当成变量,拼接后面的字符串 var lang = 'zh'; var language = lang + '_test'; <pre name="code&quo

JavaSE8基础 StringBuffer与String变量在追加字符串后,引用变量的地址发生改变

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku0; public class Demo11 { public static void main(String[] args) { String str1 = "cnblog"; String str2 = str1 + "jizuiku"; S

Puppet变量的赋值、作用域和Facter变量(十三)

puppet变量定义: 由字母[a-z].[A-Z].[0-9]和下划线(_)组成,且大小写敏感,puppet中变量必须以"$"为前缀后接"="进行赋值. 变量可以保存字符串.数值.布尔型.数组.哈希和特殊的undef值. 文章写puppet变量的赋值.作用域和Facter变量. puppet 变量赋值. 示例: class apache ($sta = "present") {   package {"httpd":    

c++ 变量定义 的初始化规则

当定义没有初始化式的变量(如int i;)时,系统有可能会为我们进行隐式的初始化.至于系统是否帮我们隐式初始化变量,以及为变量赋予一个怎样的初始值,这要取决于该变量的类型以及我们在何处定义的该变量.            1]内置类型变量的初始化           内置变量是否自动初始化,取决于该变量定义的位置.           ①在全局范围内的内置类型变量均被编译器自动初始化为0值 1 #include<iostream> 2 3 using namespace std; 4 5 //

Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)(转)

大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: Java代码 p

深入研究:对变量以及指针重新赋值过程中原本的地址是否会改变。(按值传递机制的深入)

在研究按值传递机制时,发现一些模糊的概念.就是在对一个原本的(指针)变量重新给定另外一个值时,会不会改变这个变量原本所在的内存位置(即地址).因此,决定深入研究一下.而且这也是必要的. 给一个变量重新赋值时,地址的变化 1 //验证变量在被赋值(以及被重赋值)时原本分配的内存地址是否会改变. 2 3 #include <stdio.h> 4 5 int main(void) 6 { 7 int a;//声明a,即已经给a分配一个内存地址 8 printf("声明a时的地址:%p\n&

atitit.复合变量,也就是类似$$a的变量的原理与实现&#160;java&#160;c#.net&#160;php&#160;js

atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js 1.1. 复合变量,也就是类似$$a的变量,它会进行两次的解释. 1 1.2. 数据库里面的复合变量1 1.3. 为什么只有php实现了符合变量,因为他的美元符号2 1.4. 符合变量的本质其实就是指针了2 2. 使用java实现符合变量2 2.1. invoke2 2.2. 实现2 3. 参考4 1.1. 复合变量,也就是类似$$a的变量,它会进行两次的解释. 这给PHP带来了非常灵活的动态特性.

Go语言基础变量定义及初始化

package main import "fmt" func main(){ //变量定义 var v1 int var v2 string var v3 [10] int //数组 var v4 [] int //数组切片 var v5 struct{ f int } var v6 *int //指针 var v7 map[string] int //key 为string value为int的map var v8 func (a int) int //变量初始化 var var1