b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c语言内存分配对应 C语言程序设计第8章指针

电脑杂谈  发布时间:2018-02-07 23:20:40  来源:网络整理

c语言内存详解_c语言内存分配对应_c语言申请内存

内存是由字节构成的一片连续存储的空间,每个字节都有一个编号。

字节的编号就是内存地址,简称地址。

CPU是通过内存地址来访问内存,进行数据的存取(读写)的。

在C语言程序中定义一个变量,系统根据变量的类型为变量分配一定长度的存储单元。

一个存储单元手字节的编号称为该存储单元的地址,也就是相应变量的地址,在一个地址所标记的存储单元中存放的数据称为该存储单元的内容。

一个存储单元的地址唯一指向一个内存单元,这个地址也称为指针。指针就是内存单元的地址,指针指向一个内存单元,变量的指针就是变量的地址。

变量的指针指向一个变量对应的内存单元。

指针(地址)也是数据,可以保存在一个变量中。保存指针(地址)的变量称为指针白能量。

因此,一个指针变量的值就是某个内存单元的地址(指针)。

一个指针是一个地址,是一个常量,而一个指针变量可以被赋予不同的指针值,是变量。

指针说明,即定义的变量为一个指针变量

指针变量名

指针变量所指向的对象的数据类型

类型标识符 *指针变量名

例如

int *ip;    // ip是指向整型变量的指针变量
char *cp;   // cp是指向字符型变量的指针变量
double *fp; // fp是指向实型变量的指针变量

取地址运算符&

取地址运算符&是单目运算符,结合性为右结合性,功能是取变量的内存地址,一般形式为:&变量名。

例如,&a表示a的地址,&b表示变量b的地址

取内容运算符*

取内容运算符*是单目运算符,结合性为右结合性,在*运算符之后必须紧跟指针变量名,一般形式为:*指针变量名

例如,*ip表示指针变量ip所指向的变量(*和指针变量名之间不允许有空格)。

c语言内存分配对应_c语言内存详解_c语言申请内存

注意,取内容运算符*和指针变量蒂尼中的指针类型说明符*是不同的。

在指针变量定义中,*是指针类型说明符,表示其后的变量是指针类型。

而表达式中出现的*则是一个运算符,用以表示指针变量所指向的变量。c语言内存分配对应

关于指针运算符的说明

已知定义语句

int a, *pa = &a, *pb;

&*pa等价于&a

&*pa即&(*pa),即先进行*运算,得到变量a,再进行&运算(取a的地址)。

*&a等价于a

*&a即*(&a),即先进行&运算,得到a的地址,再进行*运算,得到变量a。

可以通过赋值语句将一个内存地址赋给已定义的指针变量,通过赋值运算可以改变指针变量的指向。

// 把整型变量a的地址赋予整型指针变量,通过赋值运算可以改变指针变量的指向。
int a, *pa;
pa = &a;
// 把指针变量pa的值赋予指针变量pb,使得pa和pb均指向变量a
int a, *pa = &a, *pb;
pb = pa;
// 将空指针赋给指针变量
int *p;
- - p = NULL; // p = 0;

C语言规定数组名代表数组的首地址,即第0个元素的地址,是一个指针常量。人们将数组的首地址即数组第0元素的地址称为数组的指针,数组元素的地址称为数组元素的指针。

一般形式:类型标识符 *指针变量名

int a[6], *pa;
pa = a;         // 数组名a是数组的首地址
pa = &a[0];     // &a[0]为数组第0个元素的地址

数组指针变量与整数的加减算术运算

两数组指针变量的减运算

如果两个指针指向同一个数组,那么它们可以想见,其结果再减1为两个指针之间数组元素的个数。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66177-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...