C语言入门教程-内存地址

[09-12 13:08:24]   来源:http://www.88dzw.com  电路基础   阅读:8336

文章摘要:下面的代码是另一个例子:#include int main(){int i,j;int *p; /* 指向整数的指针 */printf("%d %dn", p, &i);p = &i;printf("%d %dn", p, &i);return 0;}这段代码告诉编译器打印p保存的地址和i占用的地址。变量p一开始是一个随意的数值或0。i的地址一般是一个很大的数字。例如,运行这段代码后得到的输出是:0 21474782762147478276 2147478276可知i的地址是2147478276。p=&i;这条语句执行之后

C语言入门教程-内存地址,标签:电子电路基础,模拟电路基础,http://www.88dzw.com

下面的代码是另一个例子:

#include 

int main()
{int i,j;int *p; /* 指向整数的指针 */
printf("%d %d
n", p, &i);p = &i;printf("%d %dn", p, &i);return 0;}

这段代码告诉编译器打印p保存的地址和i占用的地址。变量p一开始是一个随意的数值或0。i的地址一般是一个很大的数字。例如,运行这段代码后得到的输出是:

0   2147478276
2147478276 2147478276

可知i的地址是2147478276。p=&i;这条语句执行之后,就保存了i的地址。再试试下面的代码:

#include 

void main()
{int *p; /* 指向整数的指针 */
printf("%d
n",*p);}

这段代码告诉编译器打印p指向的值。然而p尚未初始化,它保存的地址是0或一个随机地址。多数情况下这将引发一个段错误(或某些其他运行时错误),表明您使用了一个指向无效内存空间的指针。段错误几乎总是由未初始化的指针或错误的内存地址导致的。

通过以上的介绍,现在我们可以从新的角度来理解指针了。请看下面的例子:

#include

int main()
{int i;int *p; /*
指向整数的指针 */
p = &i;*p=5;printf("%d %d
n", i, *p);return 0;}

程序的运行过程是这样的:

程序的运行过程示意图­

变量i占4字节的内存。指针p也占4字节(在当今使用的多数计算机上,一个指针占4字节内存。现在大部分CPU的内存地址都是32位的,尽管64位寻址已渐成趋势)。i所代表的内存位置有一个确定的地址,本例中是248,440。执行过p=&i;后,指针p也将保存同样的地址。因此变量*p和i是等价的。

指针p原样保存着i的地址。当执行如下的语句时:

printf("%d", p);

程序就会打印变量i的实际内存地址。

上一页  [1] [2] 


Tag:电路基础电子电路基础,模拟电路基础电路基础