用例子来看一下。
int a=3;
int *p;
p=&a;
现在来看一下。a=3这个式子先解释一下
等式右边是常量,左边是变量。
同理的
p=&a,左边的是指针变量,右边的是指针
指针的基本概念:为了区别内存的不同位置,内存被分成字节,内存的全部字节顺序地赋予一个称为地址的编号。程序中的变量将在内存中占据一定的内存字节,在这些字节中存储的数据信息称为变量的内容。
一个变量占用连续的若干个内存字节时,最前面的一个字节的地址就作为该变量的地址。指针就是内存地址,是变量的地址,或函数的入口地址。变量的地址在程序执行时,起着非常重要的作用。当计算机在计算含有变量的表达式时,计算机按变量的地址取出其内容,并按变量的地址将计算结果存入到变量占据的内存中。
如代码: int x=l; x=x+2; 其中语句“x=x+2;”中的第一个x涉及到变量x占据的内存,第二个 x是引用变量 x的内容。该语句的意义是“取X的内容,完成加上2的计算,并将计算结果存入变量X占据的内存中。”
指针变量和它所指向的变量:在C语言中,地址也作为一种值,能被存储、比较、赋值,并称地址数据为指针类型,而称存储地址值的变量为指针变量,简称指针。C程序可用运算符&取变量的地址,如表达式&x的值就是变量X的地址。程序除能按名引用变量外,也可利用变量的地址引用变量。按变量名引用变量称为直接引用,而将变量A的地址存于另一变量B中,借助于变量B引用变量A称为对A的间接引用。
定义指针变量的一般形式为: 类型 * 指针变量名; 或 类型 * 指针变量名=初值表达式; 其中,指针变量名是标识符,指针变量名之前的符号“*”,表示该变量是指针类型的。而最前面的“类型”,表示该指针变量能指向变量或函数的类型。初值表达式是一个地址表达式,如表达式中有某变量的地址表达式,则这个变量应是前面已定义的。
在C语言中,当定义局部指针变量时,如未给它指定初值,则其值是不确定的。程序在使用它们时,应首先给它们赋值。误用其值不确定的指针变量间接引用其它变量,会引起意想不到的错误。为明确表示指针变量不指向任何变量,在C语言中用0值表示这种情况,记为NULL。
如 ip= NULL; 也称指针值为0的指针变量为空指针。对于静态的指针变量,如在定义时未给它指定初值,系统自动给它指定初值0。
指针变量取程序对象的(开始)地址值,不能将一个整型量或任何其它非地址值赋给一个指针变量。另外,指针变量对所指向的对象也有类型限制,不能将一个不能指向的对象的地址赋给指针变量。
如有以下定义: int i=100,j,*ip,*intpt; float f,*fp; 以下代码如注释所叙。 iP=&i;/*使ip指向i*/ intpt=ip;/*使intpt指向ip所指变量*/ fp= &f;/*使fp指向正*/ ip=NULL;/*使 ip不再指向任何变量*/
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为"指针"。
意思是通过它能找到以它为地址的内存单元。 在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。
作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。
指针是程序设计语言的一个重要概念。指针在C程序中有以下多方面的作用:
利用指针能间接引用它所指的对象。
利用各种类型的指针形式参数,能使函数增加描述能力。
指针与数组结合,使引用数组元素的形式更加多样、访问数组元素的手段更加灵活。
指针能用来描述数据和数据之间的关系,以便构造复杂的数据结构。当一个数据A要关联另一个数据B时,在数据A中增加一个指向数据B的指针就可实现数据A关联数据B。结合系统提供的动态分配存储设施,又能构造出各种动态数据结构。
C语言中“指针”和“指针变量”的区别是什么??
1、概念不同 “指针”是概念,“指针变量”是具体实现,指针也是一个变量,所以需要进行定义,而对于指针的定义,与一般变量一样。2、 存放地址不同 一个变量的(内存)地址称为该变量的“指针”,通过指针能找到以它为地址的内存单元。而指针变量是用来存放另一个变量的地址的(即指针)。
指针和指针变量的区别
指针变量,就是存放内存地址的变量,也就是存放指针的变量,这样说,通俗了吧,他们之类不应该讲区别,而是应该讲关系,
指针与指针变量的区别?
指针是一种类型,指针变量是变量,不是一个东西。就像int 与 int j; 中 j的区别一样。类型不实际占用内存空间,但是它有大小。比如int的大小是4,而它的实例j占用4个Byte。指针本身也就是个地址,你的第三个问题没怎么看明白, str 的确存的是你申请到的内存空间的地址,但pstr存的是str的地址。
指针和变量有什么区别吗?
一、指代不同 1、*(p+1):表示具体的数值。2、p+1:表示内存地址。二、指向的值不同 1、*(p+1):指针p所指向的内存地址单元的下一个内存地址单元中的值。2、p+1:指针p所指向的内存地址的下一个内存地址。三、内存表示不同 1、*(p+1):*的优先级比+的优先级高,所以*P+1在编译器中...
指针与指针变量的概念是什么?
1、指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储...
指针变量和指针的区别是什么?
区别:以下面的情况说明:1、int a = 5;int* p = &a;结论:p 是指针变量p指向的变量a的存储内容,*p = 5;p 是指针变量的存储内容,因为p指向a,所以p的存储内容(存储空间的值)就是系统为变量a分配的存储地址;2、分析:int a = 5;int* p = &a;int* q = p;3、【说明】1...
变量指针和指针变量有什么区别和联系??
变量指针——这要分场合,根据前后文意思理解。通常情况下是这样的:因为指针可以声明成指向变量的,也可以声明成指向常量的,而“变量指针”应该是指前者。指针变量——这个简单!“指针变量”是指针的全称,“指针”是指针变量的简称。
指针和指针变量的区别
p=&a,左边的是指针变量,右边的是指针 指针的基本概念:为了区别内存的不同位置,内存被分成字节,内存的全部字节顺序地赋予一个称为地址的编号。程序中的变量将在内存中占据一定的内存字节,在这些字节中存储的数据信息称为变量的内容。一个变量占用连续的若干个内存字节时,最前面的一个字节的地址就...
指针变量和变量指针的异同
指针变量是变量,用于存放指针,或者说存放地址 变量指针是指针,是变量的地址 指针变量可以存放变量的指针,存放了变量的指针的指针变量可以访问那个变量的存储区,间接地修改或读取它的值
指针变量与指针所指的变量的区别,希望用较为正式规范的语言描述_百度知 ...
首先每个变量都有类型,例如整形变量,字符型变量,指针变量等等,类型指定了这个变量能取什么值以及能对这个变量进行何种的操作。指针变量表示这个变量的类型是个指针,它的值是内存中的某个地址(在32位机器上就是一个32位的值)。但是光有地址还不行,因为你不知道这个地址上放的值是什么类型,所以在...