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访问内存时组要的是地址而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译
和链接成可执行程序后,他们都会变成地址。‘
变量名和函数名为我们提供了方便,让我们在编写代码时可以用易于阅读和理解的英文字符串,不用直接面对二进制
地址,拿场景简直让人崩溃。
需要注意的是,虽然变量名、函数名、字符串名和数组名本质上一样,,但在编写的过程中吗我们认为变量名表示的
是数据本身,而函数名、字符串名和数组名表示的诗代码块或数据块的首地址。
对于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语言指针初探 一指针运算与多级指针
- C语言_初步了解一下指针
- 纪念我的第一篇博文--说一下讯飞引擎的简单使用
- 「C语言回顾之旅」第一篇:指针详解
- 第一天开始自己的BLOG生涯,庆祝一下
- 我的第一篇博文,鼓励一下自己好好学习
- 测一下markdown之第一篇博文
- 第一篇,庆祝一下
- 第一篇博文,先测试一下,看看是什么样子。
- c语言指针初探 一指针与引用
- c语言指针初探 一 指针与引用(二)
- C语言指针初探 一 指针与函数
- 第一篇博文,不发技术了,谈一下感受
- 第一篇开博,庆祝一下!
- 第一篇博文,写一下工作心得
- 庆祝一下博文过100篇访问量过30万
- 彻底搞定C语言指针第一篇
- 巩固一下C语言中的指针
- Void类型的指针-C语言
- 3、C语言中一般类型的指针变量细解