c语言基础知识提问

c语言中的一个已经赋值的变量能用地址变更吗
比如: int integer;
integer=10
printf("enter is integer");
scanf("%d",&integer);
这样子是错的还是可以这样子的呢。求大神详解

首先你的概念要清晰,integer我们称作变量名,这个东西是你自己可以改动的,你可以把一个变量命名成任意你想要的名字,除了易读性外,没有什么限制(当然不能使C语言中的关键字)。

int integer;
这个语句是你告诉计算机在内存中开辟一个存储空间,这个存储空间的大小是整型大小,这个存储空间就是要存储你这个integer变量的。至于这块存储空间开在哪那是编译器或者是操作系统的事情,你是控制不了的。
integer=10;

这句话是告诉计算机,你刚才开辟出来的那段存储空间给我存上“10”这个数字,在内存中当然是二进制。
&integer,这个是指取出integer这个变量所在位置的地址,因为你要从键盘给integer赋值。这就跟别人给你寄东西肯定不能只写你的名字,名字不具有唯一性,但是地址是具有唯一性的。scanf就是利用地址进行赋值,可以这么理解一下。如果你想深入学习可以看看编译原理或者计算机体系结构类的书,对你理解内存有帮助。追问

应该是我表达错了 其实我就是想问下 先
integer=10 再还可以用
scanf("%d",&integer); 来改变integer的值吗(⊙o⊙)

追答

当然可以

追问

谢谢我明白了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-15
第2个回答  2015-04-20
这个是可以的,integer=10这个是赋值,后面用户输入的就是覆盖前面的复杂(也可以说是更新integer的值)
第3个回答  2015-04-20
integer = 10;后面少了一个分号,一个已定义的变量是无法改变其内存地址的,在C语言中你甚至无法自己选择使用哪一些内存地址作为某一变量的存储空间追问

可是用while 循环的话不就 把integer 的值改变了吗,为什么用&就不行呢 新人不太懂 能祥解下嘛

追答

。。。用while循环还要看你所做的操作,如果你所做的操作与这个变量无关,则这个变量的值是不会改变的。&是取地址符,你用取地址符把对应的内存地址取出来还OK,要改变是不行的。除非你用的是汇编语言,在汇编语言里你倒是可以
mov ax, 1000
mov ds, ax
mov ax, 10
mov [0], ax
这样的操作就可以把内存地址为1000:0000的值改为10了,但是在C语言可能做不到,因为我没见过。。。-_-||

第4个回答  2015-04-20
可以吧。赋值与引用无关。
相似回答