达州大亚网站建设,湛江网站制作网站,建立网站 要怎么做,怎么查网站的空间商指针是C语言中的一个重要概念#xff0c;也是C语言的一个重要特色#xff1b;使用指针#xff0c;可以使程序简洁、紧凑、高效。不掌握指针#xff0c;就没有掌握C语言的精华。 目录
一、定义
1.1地址
1.2指针
1.3指针变量
1.4指针和指针变量的区别
二、使用指针变量… 指针是C语言中的一个重要概念也是C语言的一个重要特色使用指针可以使程序简洁、紧凑、高效。不掌握指针就没有掌握C语言的精华。 目录
一、定义
1.1地址
1.2指针
1.3指针变量
1.4指针和指针变量的区别
二、使用指针变量的实例
2.1程序分析
2.2带*号的解释
2.3引用指针变量的3种情况 我们先来看一副图带着你的疑问往下看。 变量ijkj_pointer大小均为4个字节不同编译器和操作系统大小可能不一样 计算机内存的最小单位是位(Bit)基本单位是字节(Byte)1 byte 8 bit 一、定义
1.1地址
在内存区每一个字节都有一个编号这个编号就是“地址”它相当于学生宿舍的房间号例如“101”房间每个房间里面可以居住学生即每个地址标注的内存单元字节可以存放数据相当于房间中有8张床对应于1个字节byte有8位bit。
注意不同类型的数据分配的存储单元大小(字节数)和存储方式(整数以补码形式存放实数以指数形式存放)是不同的。C语言中的地址包括位置信息(编号)和类型信息或者说是“带类型的地址”。
int a; //定义整型变量a
a; //得到变量a的地址或者说是“整型变量a的地址” 取地址运算符 1.2指针
因为可以通过地址找到对应的存储单元所以将这个“地址”形象化的称之为“指针”意思通过它就能指向所需要的内存单元。
访问变量存储单元的方式有两种
①直接访问在编译时系统已经建立了变量名和地址的对应表因此通过变量名就能访问到相应地址对应的存储单元。
②间接访问即将变量的地址存放在“另一变量”中然后通过访问“另一变量”找到原变量的地址从而访问相应的存储单元。即将变量 “i” 的地址存放在变量 “i_pointer” 中通过访问变量 “i_pointer” 找到变量 “i” 的地址。
1.3指针变量
专门用来存放“变量地址指针”的变量即称之为“指针变量”也可以称为地址变量在C语言中可以定义整型浮点型字符型等指针变量。
定义方法为类型名 * 指针变量名
int* a_pointer;
float* b_pointer;
char* c_pointer;
也可以在定义的同时进行初始化
int a; //整型变量
int* a_pointer a; //整形指针变量float b; //浮点型变量
float* b_pointer b; //浮点型指针变量char c; //字符型变量
char* c_pointer c; //字符型指针变量
在定义时必须指定该指针变量的指向的变量的类型。
1.4指针和指针变量的区别 通过上面的了解我们再来看这幅图我们可以知道变量 i 的指针地址是1000变量 j 的指针是1004变量 k 的指针是1008而不能说变量 i 的指针变量是1000。变量 j_pointer 存放的是变量 j 的地址所以 j_pointer 是一个指针变量。 指针是一个具体的地址而指针变量是存放地址的变量 指针是具体的指针变量在未指向实际存储地址时是不确定的。 二、使用指针变量的实例
#includestdio.h
int main()
{int a 12, b 21; //定义两个整型变量并初始化int* p1, * p2; //定义两个指向整型的指针变量p1 a; //赋予a的地址p2 b; //赋予b的地址printf(a %d, b %d\n, a, b); //输出a,b的值printf(*p1 %d, *p2 %d\n, *p1, *p2); //输出两个指针变量的值所指向的变量值return 0;
} 2.1程序分析
第5行定义了两个指针变量 p1 和 p2但此时他们并未指向任何一个变量只是两个指针变量第67行使他们指向整型变量 a 和 b第8行输出变量 a 和 b 的值第9行输出 *p1 和 *p2 的值*表示指向也就是变量 a 和 b。 *指针运算符间接访问运算符 2.2带*号的解释
程序中出现了两处*p1和*p2分别在第5行和第9行二者意义不同
第5行的 *p1 和 *p2 表示定义两个指针变量 p1 和 p2他们前面的*仅表示该变量是指针变量第9行的 *p1 和 *p2 表示指针变量 p1 和 p2 所指向的变量即 a 和 b。
注意指针变量是p1和p2而不是*p1和*p2所以第67行不能写成
*p1 a;
*p2 b;
因为变量 a 的地址是赋给指针变量 p1而不是赋给指针变量所指向的变量 *p1即变量a。
2.3引用指针变量的3种情况
①给指针变量赋值
p a; //把a的地址赋给指针变量p
②引用指针变量指向的变量
printf(%d, *p); //以整数形式输出指针变量p所指向的变量的值
③引用指针变量的值
printf(%p, p); //以16进制输出指针变量的值即地址
指针的概念比较复杂使用也比较灵活。