您的位置:首页 > 编程语言 > C语言/C++

C语言指针初探(第一篇博文庆祝一下我的OI生涯)

2017-04-17 22:30 267 查看
众所周知,电脑内存中的字节编号即为地址(Adress)或指针(Pointer)。

对于32位环境,程序能够使用的内存为4GB,最小地址为0,最大地址为0*FFFFFFFF。

下面的代码演示了如合输出一个地址:

#include <stdio.h>

int main()

{

    int a=100;

    char str[20]="c.bianchen.net";

     printf("%#X,%#X\n",&a,str);  //%#x表示以十六进制形式输出,并附带前缀0x。

     return 0;

}   运行结果不同计算机是不一样的。

a是一个整型变量,需要在前面加&来获得他的地址,str本身就表示字符串的首地址,不需要加。

一切都是地址

c语言用变量来储存数据,用函数来定义一段可以重复使用的代码,他们最终都要放到内存中才能供CPU使用。

CPU只能通过地址来获取内存中的代码和数据,程序在执行过程中会告知CPU要执行的代码以及要读写的数据

的地址。如果程序不小心出错,或者开发者有意为之,在CPU要写入一个数据时给他一个代码区域的地址,就会

发生内存访问错误,导致程序崩溃。

CPU访问内存时组要的是地址而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译

和链接成可执行程序后,他们都会变成地址。‘

变量名和函数名为我们提供了方便,让我们在编写代码时可以用易于阅读和理解的英文字符串,不用直接面对二进制

地址,拿场景简直让人崩溃。

需要注意的是,虽然变量名、函数名、字符串名和数组名本质上一样,,但在编写的过程中吗我们认为变量名表示的

是数据本身,而函数名、字符串名和数组名表示的诗代码块或数据块的首地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 指针 内存