您现在的位置是:首页 >

总量指标用什么表示 C语言中指标怎么表示一个变数地址,详细点。谢谢

火烧 2022-04-11 06:53:39 1072
C语言中指标怎么表示一个变数地址,详细点。谢谢 C语言中指标怎么表示一个变数地址,详细点。谢谢指标变数的值就是一个记忆体地址, 如想访问这个记忆体地址所储存的资料, 用*号c语言关于指标变数地址问题

C语言中指标怎么表示一个变数地址,详细点。谢谢  

C语言中指标怎么表示一个变数地址,详细点。谢谢

指标变数的值就是一个记忆体地址, 如想访问这个记忆体地址所储存的资料, 用*号

c语言关于指标变数地址问题

p是一个指标变数,它的值是阵列a的首地址
p的地址是&p
但是p+1是一个值,这个值的地址怎么可能打印出来呢? 他虽然有容器存放,但是这个容器的名字不是p+1;
可以先 p++; 再列印p
只有有名字的指标才能列印它的地址
printf("%p",&5);不可能打印出来,常量不是按变数的方式存放在记忆体中的

C语言中定义一个指标和一个区域性变数,给这个指标系结地址前列印其记忆体地址。指标地址不变,区域性变数地址

首先你的描述令我感觉逻辑很混乱,不知道你到底讲了个什么事情……
然后我想说的是
指标也是一个变数,它储存的内容就是一个地址(型别由指标变数型别决定)
比如说
int a;
int *b;
a和b都是变数,只不过a可以储存的值是一个int型,而b可以储存的是一个int型的地址

C语言中指标的地址问题

首先我要指出的是根指标的地址与指标储存的地址一般不可能相同~!(一楼列出的情况除外,将指标的地址赋给一个变数再将变数的地址赋给指标)
举个例子:
int number,*p;
number=1;
p=&number;
你可以这样理解,number 和 *p都是一个整型资料变数,程式在记忆体中
为它们都保留了一个地址(两个不同的地址),用以存放它们的值,在
number的地址中储存的值是1,在*p的地址中储存的值是number的地址!
你也可以用 &p 求出*p 的根地址。(一般只在二维及以上阵列、连结串列等高阶主题中用到指标的根地址)

C语言指标变数怎么能表示任何记忆体地址.

你用的是16位的编译器吧.(比如TC之类的)
你还没学汇编(或者计算机原理之类)的吧.
80X86CPU在16位模式下,地址是靠两个16位的2进位制数表示的.就是 段地址 和偏移量 ,它们组合成20位的实地址能定址1M的空间(具体怎么组合,有兴趣了自己在网上看看).
你选择的编译模式是small(TC预设的,Model Small),只有一个数据段.所以段地址固定不变(在程式执行时等于一个常数.不需要表示),所以
char *p;
sizeof(p)==2 (这是个16位的偏移量)
如果你把编译模式改成large或者huge
这个时候 char *p;
sizeof(p)就是 4 了,它包含了段地址和偏移量.
或者不管在什么模式下,你直接宣告一个char far *p;
可以断定sizeof(p) 是4
这也是char near *p 和char far *p 的不同.
char far* 是包含段地址和偏移量,
char near* 则只有偏移量.
small 模式下,预设char * 就是char near*
而large模式下, 预设char * 就是 char far*
(near和far编译器帮你加上的)
段地址和偏移量组合后只有20位,所以在真实模式下直接定址只有1M空间.(注意是【直接】能寻到的空间)
如果你接触过dos(真正的dos而不是winxp下面的cmd),你就会知道,在没有扩充套件记忆体和扩充记忆体的情况下,总共可利用的记忆体只有1M(不管你的记忆体条是多少M的),定址能力不行.
最后导致使用者可以用的记忆体只有600K左右.
如果有兴趣的话,自己找点这方面的知识看看

c语言中指标变数怎么理解?怎么用?

指标变数是一个变数,它储存的是另一个变数的记忆体地址。你如果知道了这个指标变数储存的值,就可以知道它所指向变数的记忆体地址,于是就可以间接访问到那一个变数。
定义:指标变数型别 *指标变数名1, *指标变数名2, ... ;
例如:
int main(void)
{
int *p;
int a;
p = &a;
*p = 1;
return 0;
}
把指标作为函式的引数传递,可以使函式可以访问函式外部的变数,例如:
void swap(int *a, int *b)
{
int c;
c = *a; *a = *b, *b = c;
}
指标也可以用于传递阵列,阵列名本身就是一个指标:
void func(int a[], int n)
{ ..... }
指标还可以指向指标,指向结构体(struct),指向阵列
int **p;
struct XXX *p;
int (*p)[100];

C语言中指标变数的问题

int a[10]是a[0~9];而后缀++是先用后加。
所以这句*p++=i;和很重要。每次回圈是a[n]=n;最后次执行是a[9]=9,但p已经指向a[10](越界),才跳出回圈。
此时p=a+10,*p=a[10]。
所以会出现指标变数跳出到阵列以后的记忆体单元 和 必须加上第二个p=a,没有了第二个p=a怎么出来的答案这么不靠普。
建议初学者,一步步来,搞懂基本,对于++和阵列名与指标的关系,这些有关地址的一点点来,要是几种混一起,容易乱。

C语言中定义一个指标变数*p p自身有地址吗?

任何变数都有地址,指标变数也不例外。

c语言 变数地址

他应该是把地址用char显示出来了。
你可以cout<<int(&a) ;

总量指标用什么表示 C语言中指标怎么表示一个变数地址,详细点。谢谢

地址不变,值变
int *a,*b;
a=b;
这时候a的地址变了

  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码