变量的指针和指针变量的区别是什么
- 格式:doc
- 大小:29.50 KB
- 文档页数:1
//指针变量的最详细的使用说明。
//指针变量是c语言最重要的特性,掌握了它,你就会很快的脱离菜鸟。
指针变量是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。
要搞清一个指针变量需要搞清指针变量变量的四方面的内容:指针变量的类型,指针变量(存放指针后)所指向的类型,指针变量的值或者叫指针变量所指向的内存区,还有指针变量本身所占据的内存区。
让我们分别说明。
先声明几个指针变量放着做例子:例一:(1)int *ptr;(2)char *ptr;(3)int **ptr;(4)int (*ptr)[3];(5)int *(*ptr)[4];如果看不懂后几个例子的话,请参阅我前段时间贴出的文章<<如何理解c和c++的复杂类型声明>>>。
1。
指针变量本身的类型。
从语法的角度看,你只要把指针变量声明语句里的指针变量名字去掉,剩下的部分就是这个指针变量的类型。
这是指针变量本身所具有的类型。
让我们看看例一中各个指针变量的类型:(1)int *ptr; //指针变量的类型是int *(2)char *ptr; //指针变量的类型是char *(3)int **ptr; //指针变量的类型是int **(4)int (*ptr)[3]; //指针变量的类型是int(*)[3](5)int *(*ptr)[4]; //指针变量的类型是int *(*)[4]怎么样?找出指针变量的类型的方法是不是很简单?2。
指针变量所指向的类型。
当你通过指针变量来访问指针变量所指向的内存区时,指针变量所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
从语法上看,你只须把指针变量声明语句中的指针变量名字和名字左边的指针变量声明符*去掉,剩下的就是指针变量所指向的类型。
例如:(1)int *ptr; //指针变量所指向的类型是int(2)char *ptr; //指针变量所指向的的类型是char(3)int **ptr; //指针变量所指向的的类型是int *(4)int (*ptr)[3]; //指针变量所指向的的类型是int()[3](5)int *(*ptr)[4]; //指针变量所指向的的类型是int *()[4]在指针变量的算术运算中,指针变量所指向的类型有很大的作用。
智者论道智库时代 ·275·C 语言指针变量的定义及指针的应用王宇博(山西农业大学,山西晋中 030800)摘要:C 语言进行编写程序一定会使用上指针,指针的操作是编写程序的一个点。
准确灵活地运用它,能够帮助我们处理实际生活中遇到的很多问题。
文章阐述了指针、指针变量以及指针运算标识符的概念,并运用实际例子介绍复杂指针的相关应用,让读者能够更加深入了解、掌握C 语言。
关键词:C 语言;指针;运用中图分类号:TP313文献标识码:A文章编号:2096-4609(2019)19-0275-002指针可以说是C 语言之中很具有特色的一个方面,另外也是C 语言学习过程中的重点以及难点。
标准、合理、正确、灵巧地运用其功能,可以用其代表繁杂的数据类型。
熟练应用指针功能,能够让程序更加简洁以及高效。
部分C 语言学习者在进行学习过程中很难对学习内容做到全部理解,致使其学习过程很艰难。
一、指针和指针变量的区别(1)“指针”是定义,“指针变量”为实际表现。
指针可以说是一种变量,因此我们可以对其进行概念化,而其概念与常见变量相同。
(2)一个变量的“指针”是指此变量的地址,借助指针可以寻找到用它来当作地址相关内存单元。
另外指针变量可以用来放置其他变量的内存地址。
(3)指针与指针变量有着不同的两个定义,需要提醒的是,一般提及指针变量时往往会将其简称为指针,但事实上两个实际含义并不相同。
二、指针变量定义在C 语言使用过程中要求所有变量先进行定义才可以进行使用,规定其类型,且依据此来区分内存单元。
指针变量与常规的整型等类型变量不完全相同的某种变量,这是一种是存放相应地址的专用变量,所以需要定义其“指针类型”。
指针变量名称的常规可见形式一般为:基种类型*指针变量名称;例如:int *i;float *j;“*”一般代表此变量的类型是指针类型。
指针变量名称是i 和j,并非*i 和*j。
在对指针变量进行定义时首先要指定其基类型。
实验8-1 指针基本概念【知识点回顾】1.指针和指针变量1)内存地址:内存存储单元的编号,从0开始,以字节为单位2)指针:一个内存地址有且仅有一个内存存储单元对应,即一个地址“指向”一个单元,故将地址称为指针3)指针变量:C语言中允许将地址作为数据值,用一个变量来存放。
存放指针的变量称为指针变量。
2.指针变量使用三步骤1)声明:一般形式如:类型说明符*指针变量名;2)初始化:一般形式如:指针变量=&变量;3)访问数据:一般形式如:*指针变量3.指针运算符1)间接访问运算符“*”2)取地址运算符“&”4.printf和scanf是否使用指针对比:假定有int x,y;int *px=&x,*py=&y;1)不使用指针的输入输出语句:scanf(“%d %d”,&x,&y);printf(“%d %d”,x,y);2)使用指针的输入输出语句:scanf(“%d %d”,px,py);printf(“%d %d”,*px,*py);5.打印地址信息:1)使用%p占位符2)使用%x占位符【典型例题】1.例题1,指针的基本使用方法#include <stdio.h>int main(){int data=100;//第一种指针变量定义方式:声明与初始化分两步完成int * pd; //声明指针变量pd=&data; //初始化指针变量,注意细节,data变量必须之前声明过//下面是第二种指针变量定义方式:声明与初始化一步完成//int * pd = &data; //声明指针变量,同时初始化指针变量printf("Direct access: data = %d\n", data); //变量的直接访问printf("Indirect access: data = %d\n",*pd); //变量的间接访问printf("The address of data is %p\n", &data);//变量的地址输出printf("The address of data is %p\n",pd); //指针变量的输出return 0;}程序运行效果如下:2.例题2,两数求和。
2变量的指针和指针变量的区别是什么。
答;一个变量的地址指出了变量的存储单元在内存中的具体位置,能对变量进行存取操作。
这个变量的地址就是变量的指针。
指针是一种具有特殊意义的整型数,指针不能存放在一般的整型变量中,必须存放在专门指针的变量中,这类变量就是指针变量。
3 一维数组元素的引用有哪些方式。
答;下标法、地址法、指针法
4 2维数组列地址有哪些计算方法。
答;1 根据数组元素所在的行计算出行地址,然后把行地址转换成行中首元素的地址,再根据数组元素所在的列计算数组元素的地址。
2 根据2维数组的数组元素在存储空间上按行连续存放的特点,每个数组元素的地址等于2维数组元素的首元素地址加上该数组元素相对于首元素位置的偏移量。
3把2维数组的每一行当作一个一维数组,用一维数组元素地址的计算方法计算相应的2维数组元素的地址。
第9章结构体与共用体
1 什么是链表。
其中单向链表具有哪些特点。
答;链表是若干个同样类型的结构通过依次串接方式构成的一种动态数据结构。
链表中的每一个结构体数据成为结点,链表可以分成单向链表和双向链表
单向链表的特点;1 链表中的结点数据可以改变的
2 结点占用的内存是动态分配内存和动态释放内存函数。
2 对单向链表的常用操作有哪些。
答;对单向链表的常用操作有建立、显示、插入,删除和查找。
3 什么是共用体。
答;共用体是一个集合体。
它的各个成员的数据类型可以是不相同的,所有成员共享同一段存储空间,存储空间的大小取决存储单元最大的成员的数据类型。
4 指向结构体类型变量的指针变量引用形式有哪些。
答;有两种形式;【星号指针变量名】。
成员名和指针变量名-大于号成员名。
第10章位运算及编译预处理
1 C提供的编译预处理功能有哪些。
如何实现。
答;功能有三种;宏定义、文件包含和条件编译,分别用宏定义命令、文件包含命令、条件编译命令实现。
2 文件包含的基本功能是什么。
答;文件包含处理是一个源文件可以将另一个源文件的全部内容包含到本文件中来,作为本文件的一部分,这可以节省程序设计人员的重复劳动。
【3【在C语言中提供了几种什么样的位运算符。
答;-、小于小于、大于大于、
4 文件包含需要注意哪些问题
答;一个井include命令只能指定一个被包含文件,包含多个文件侧需多个井include命令;文件包含可以嵌套,即一个被包含文件中可以包含另一个被包含的文件;在井include命令中,文件名可以用双引号或尖括号括起来。
第11章文件
1 文件的结束标志有哪些。
答;每个文件都有一个结束标志。
当文件的位置指针移到文件的结束标志处时,表示文件结束。
如何测试文件是否结束,常有2种方法
1 ASCII码文件的结束标志用【-1】表示。