❶ c语言变量的地址
不可以,变量的地址不会变化。只可以修改变量对应的值(地址的内容)。
❷ C语言中变量的地址是什么类型的
变量的地址,在C语言中,一般写作指针类型。
不同类型的变量地址,用不同的指针进行保存。
比如,char 类型的地址,使用char*保存,而int型地址,用int *保存。
除此外,部分情况下也会采用整型类型来保存变量地址,具体使用何种整型类型,取决于编译器:
1 16位编译器,地址占16位,2字节,可以使用short或者int保存。
2 32位编译器,地址占32位,4字节,可以使用int或long保存。
3 64位编译器,地址占64位,8字节,可以使用long保存。
不过不推荐使用整型类型保存地址,会带来移植上的不通用。
❸ C语言关于取值和取址
1、首先打开Visual C++,点击左上角“文件”菜单按钮,并点击“新建”按钮。在弹出的窗口中首先选择“文件”选项卡,在左侧列表中选取“C++ Source File”项。
❹ 在C语言中,地址与地址值有什么区别
mai()
{int *p,w;这里定义了一个整型指针跟数据.它们各被分配了一个存储单元,也就是地址,但是这个地址是不一定的,不可控制的.
w=9;在这里把9赋给了W,这时W的址地值就是9了.
p=&w;而在这里把W的地址赋给了指针变量P,这时P的地址值就是W的地址了.
简单的说,地址是系统自动赋给的,每一个数据都有一个唯一的地址,而地址值是由用户赋予的.是可控的.
❺ C语言指针和常规变量,地址和值的相互赋值有什么是合法的和不合法的
char a[5]="abcd";这样是合法的;
*a="abcd",a="abcd"都不合法,因为*a只是一个字符的空间。a代表的是a[]的地址;
*a='c';这样是可以的;
❻ c语言 怎么计算地址 和值 解读一下这个程序好嘛
其实也可以吧a[3][4]这个二维数组看成3个一维数组:
a[3][4]={a[0],a[1],a[2]}
a[0]={0,1,2,3}
a[1]={4,5,6,7}
a[2]={8,9,10,11}
在这道题里标示符a代表a[0][0]的地址,标示符a[0]代表a[0][0]的地址,标示符a[1]代表a[1][0]的地址,标示符a[2]代表a[2][0]的地址 ->【解释】例如定义一个一维整型数组 int b[10]; 那么标示符b就能代表b[0](该数组的第一个元素)的地址,可以作为地址常量使用,类似指针。
printf("%d",a):题中a应该为a[0]的地址值,而a[0]为a[0][0]的地址值,所以a为a[0][0]的地址值。
printf("%d",*a):&为取地址符号,*为间接访问符号,主要用于指针,比如int m,*q;q=&m; *q就可以代表m了,*q的值就是m的值。题中*a为a[0]的值,可惜a[0]不是个数,a[0]代表a[0][0]的地址值,所以*a为a[0][0]的地址值。【但*a[0]代表a[0][0]的值,两者不要混淆】
printf("%d",a+1):指针可以和整数进行加减运算,运算结果仍是指针类型。比如定义一个一位数组 int b[10],*q;q=&b[4]; 那么q代表b[4]的地址值,q+1代表b[5]的地址值,q+2代表b[6]的地址值。题中a+1代表a[1][0]的地址值(注意不是a[0][1])。
printf("%d",*(a+1)):之前说了,a+1代表a[1][0]的地址值,所以*(a+1)可以代表a[1][0],*(a+1)的值就是a[1][0]的值。
关于&就不多说了吧。。。打字好累。。。
❼ 关于C语言字符变量的地址
因为你这个a是字符数组,a相对于指针,但是a不能赋新值,比如:
#include <stdio.h>
int main()
{
char a[100];
scanf("%c",a);
*a=65;//允许像指针一样操作
*(a+1)=0;
//a++; 但不可以和指针那样递增赋新值
printf(a);
return 0;
}
综上,a相对于指针,但不完全是指针,所以scanf中对于a是不必&求地址。
如果是:
char a;
scanf("%c",a);//则是错误的,因为这里的a是字符,则会把a的值当着scanf参数,而非a的地址。
❽ C语言关于值传递与地址传递的问题
编程中,很多东西要你自己去摸索,才能真正的理解。关于地址与值的问题,其实你自己可以试,把变量的地址输出来看看看是不是一样,比如 printf("%x",&a); 这样就是以把变量a的地址用16进制的方式输出来,看看地址到底是怎么一回事。
传值与传地址可以这样理解:
就像我把我写的作文抄了一份给你,你拿去看了之后把有的地方改了,现在我要交作文,而我有一份,所以我直接交了,我交的作文内容并没有变,这就是传值,即值传递。
同理,如果我把我的作文直接给你,你看了后也把有些地方改了,现在我也要交,你只能还给我,我再交,这时我交的就是被你改过的了,这就是传地址,即引用传递。
这只是我的理解,有误的地方还请指正。
❾ 在c语言中给一个变量赋值与赋地址的区别
1、传递的变量值不同
两者其实传递的都是一个内存单元的内容。不同的是,值传递的内容是一个变量的值,得到这个值后,对这个值得修改不能改变原变量的值;而地址传递的是一个变量的地址,得到传递的地址值后,可以通过这个地址直接访问地址对应的那个变量,进而修改那个变量的值。
2、传递的途径不同
值传递只是将变量的内容复制一份而已,函数进行操作的其实是另一个变量,只是另一个变量的值和传递的变。赋地址相当于间接操作就相当于知道了这间房子的具体位置去找里面的主人而赋值是直接去根据主人名字去找它。
3、传递的函数不同
赋地址inta=10,b;给变量赋值就是b=a;但是赋地址就不行因为地址只能赋给指针变量应在上面基础上加char*p;把a的地址给p就是p=&a;地址只能存在指针变量中变量赋值,是可以给变量赋一个相同类型的任意的数据,而变量的地址是系统在内存随机分配的,不能更改。并且只有指针变量才能赋地址值。
给变量赋地址这个变量要为指针变量int*p,b;*p=&b;给变量赋值只要类型相同就行。其实都是一样,都是给一个数据,地址也是一个数值而已给变量赋值是复制一个数如:inta=1b;b=a;则变量b被赋值为a的值,但是赋地址得用指针,因为指针的定义就是地址的意思。
❿ C语言中地址值和地址的区别是什么
地址是存放值的内存空间对应的门牌号码。
地址值是门牌号对应内存空间里存放内容。
通俗讲,一栋楼房,
101号房间什么都没只有1个人。
这个人是值。
101是地址。
房间是内存空间。