精华内容
下载资源
问答
  • 指针变量

    千次阅读 2020-12-23 13:50:02
    指针变量广义上说,常说的“指针”隐含两个东西,一个是指针变量,另一个是指针常量。我们一般都是统称它们为指针,在大多数情况下,指针指的都是指针变量。如果指针用得很熟悉的话,没有必要对它们做严格区分。 指针...

     指针变量广义上说,常说的“指针”隐含两个东西,一个是指针变量,另一个是指针常量。我们一般都是统称它们为指针,在大多数情况下,指针指的都是指针变量。如果指针用得很熟悉的话,没有必要对它们做严格区分。

     

    指针变量和普通变量一样,都是用于存放数据的,只是指针变量存放的数据很特殊,是为存地址。一般情况下,如果不考虑指针强制转换的话,我们要求某个类型地址必须放到对应类型的指针变量中,如下所示。

    int a=10;

    int *p=&a;// a空间的地址假设为0x07080345

    以上两句话,对于有C语言基础的同学来说,再简单不过了,如下图所示。

     

     从上图中可以看出,指针变量p和普通变量a之间没有本质区别,都是变量空间放了一个数值,只是p里面的数值比较特殊,是a空间的地址,它指向了空间a。打个比方,一张名片好比就是变量p,名片上记录了公司的地址,这个地址就指向了公司的空间,这时候就说名片指向了公司的空间。

    必须搞清楚的是, p指向了空间a,本质是p里面存放的地址指向了空间a,只是往往简单说成“指针p指向了空间a"。如果准确地讲,应该表述为“指针变量p里面存放的地址指向了空间a"。

     

    展开全文
  • 数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量指针变量的值就是某份数据的地址,这样的一份数据可以是...
  • 通过前面的学习,我们知道把变量的地址存放到指针变量中了,让指针变量指向某个变量。例如: int a; //定义int类型的变量a; int *p3; //定义指针变量p3,它是 int* 类型,存放int类型变量的地址; p3 = &a; /...

    通过前面的学习,我们知道把变量的地址存放到指针变量中了,让指针变量指向某个变量。例如:

    int a;          //定义int类型的变量a;

    int *p3;        //定义指针变量p3,它是 int* 类型,存放int类型变量的地址;

    p3 = &a;    //把变量a的地址赋给指针变量p3,指针变量p3指向变量a;

           此时,p3指针变量存放了变量a的地址,那么,怎么样通过p3指针变量访问变量a,获取变量a的数据?

           在C语言中提供了“指针取值运算符*”,就是在指针变量前面加上指针取值运算符*,就是对指针变量进行“降级”,变成指针变量所指向的变量。注意:指针取值运算符*,我们也称为:指针降级运算符。

           例如指针变量p3指向变量a,那么,*p3就是对指针变量p3进行“降级”,变成指针变量p3所指向的变量。那么,指针变量p3指向变量a;所以,*p3就变成了变量a;所以,有如下图:

           所以,可以通过“指针取值运算符*”,对指针变量进行降级,转换成指针变量所指向的变量。程序测试例子如下:

           程序运行结果如下:

           可以看到,我们定义了变量a,取出变量a的地址,赋给指针变量pa;那么,指针变量pa就指向了变量a。

           然后,再通过指针取值运算符“*”,对指针变量pa进行降级,把*pa转换成指针变量pa所指向的变量a。

           那么,*pa就是变量a;所以,执行 a1 = *pa; 就是把变量a的值赋给变量a1;最终,发现变量a1存放的数据,就是变量a存放的数据。

           经过本节课的学习,我们知道了指针变量的定义和使用,那么,可以总结以下几点:

    (1) 指针变量就是一个变量,它有自己的存储空间;

    (2) 指针变量的存储空间,存放的是某个变量的地址;例如:

    int a;

    char* pa = &a;

           那么,指针变量pa的存储空间,存放了变量a的地址。此时,称指针变量pa指向变量a;

    (3) 通过“指针取值运算符*”可以对指针变量进行“降级”,把指针变量转换为它所指向的变量;例如:

    int a;

    char* pa = &a;

    *pa = 'A';

           那么,*pa表达式就表示指针变量pa所指向的变量a,最终,就是给变量a赋值'A'字符。

    韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

    展开全文
  • 指针和指针变量的区别

    千次阅读 多人点赞 2021-05-12 22:17:08
    文章目录 内存 左值与右值 指针和指针变量 首先引入一些概念 内存 内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的。 所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个...


    首先引入一些概念

    内存

    内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的。
    所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小都是一个字节
    为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

    为什么存在地址

    为了提高效率,快速标识与定位。


    左值与右值

    空间 对应 左值

    例:(对a来说)
    a = 20;
    //当把值赋给a时,是给a的空间写入20。

    内容 对应 右值
    例:(对a来说)
    b = a;
    //把a的内容赋给b。


    指针和指针变量

    什么是指针

    指针就是地址地址就是指针

    什么是指针变量

    指针变量是变量。定义一个指针变量,是在内存中开辟一个空间,该空间里面存放地址。

    如何使用

    指针更多强调的是内容(对应右值),指针变量更多强调的是空间(对应左值)。判断一个指针和一个指针变量要通过判断它是左值还是右值

        int *p = &a;  //定义了指针变量p
        p = &b;  //将b的地址放在p的空间
        int *q = p;  //定义了指针变量q,把p的内容(地址)给了q(空间)
    

    大部分使用的都是指针变量,但是书中经常简称定义一个指针,这种说法并没有错,这时通过上下文,通过左值和右值进行判断。

    指针和指针变量不一样,严格来说,定义一个指针是个错误的说法。但是,在日常生活中,还是将指针和指针变量混在一起使用,因为大部分人和书将指针和指针变量混在一起。既可以说定义一个指针,也可以说定义一个指针变量,它到底是什么需要自己判断。

    展开全文
  • 变量的指针和指向变量的指针变量

    千次阅读 2020-04-24 20:53:08
    指针和指针变量的定义: 一个变量的地址称为该变量的“指针” 例如,地址1000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量” 定义一个指针变量 定义指针变量的一般形式...

    指针和指针变量的定义:

    一个变量的地址称为该变量的“指针”
    例如,地址1000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”

    定义一个指针变量

    定义指针变量的一般形式为
    基类型 *指针变量名;
    说明
    可以用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向一个该变量
    例子
    float *pointer_3;
    char *pointer_4;
    pointer_1=&i;
    pointer_2=&j;
    在这里插入图片描述
    注意

    1. 指针变量前面的“*”,表示该变量的类型为指针型变量
      例 : float pointer_1;
      指针变量名是pointer_1 ,而不是
      pointer_1
    2. 在定义指针变量时必须指定基类型。
      需要特别注意的是,只有整型变量的地址才能放到指向整型变量的指针变量中。下面的赋值是错误的∶
      float a;
      int * pointer_1;
      pointer_1=&a;

    指针变量的引用

    注意:
    指针变量中只能存放地址(指针)
    不要将一个整数(或任何其他非地址类型的数据)赋给一个指针变量
    例子 —— 通过指针变量访问整型变量

    #include <stdio.h>
    void main()
    {
         int a,b;
         int *pointer_1, *pointer_2;
         a=100;b=10;
         pointer_1=&a;  /*把变量a的地址赋给pointer_1 */  
         pointer_2=&b;  /*把变量b的地址赋给pointer_2 */
    printf(″%d,%d\n″,a,b);
    printf(″%d,%d\n″,*pointer_1, *pointer_2);
    }
    

    在这里插入图片描述

    对“&”和“*”运算符说明:

    如果已执行了语句 pointer_1=&a;

    1. &* pointer_1的含义是什么?
      “&”和“”两个运算符的优先级别相同,但按自右而左方向结合。因此,& pointer_1与&a相同,即变量a的地址。
      如果有pointer_2 =&* pointer_1 ;它的作用是将&a(a的地址)赋给pointer_2 ,如果pointer_2原来指向b,经过重新赋值后它已不再指向b了,而指向了a
      在这里插入图片描述
    2. &a的含义是什么?
      先进行&a运算,得a的地址,再进行
      运算。&a和pointer_1的作用是一样的,它们都等价于变量a。即*&a与a等价
    3. (*pointer_1)++相当于a++
      例子 —— 输入a和b两个整数,按先大后小的顺序输出a和b
    #include <stdio.h>
    void  main()
    { int *p1,*p2,*p,a,b;
      scanf("%d,%d",&a,&b);
     p1=&a;p2=&b;
      if(a<b)
     {p=p1;p1=p2;p2=p;}
     printf("a=%d,b=%d\n\n″,a,b);
      printf("max=%d,min=%d\n″,*1,*2);
    } 
    

    在这里插入图片描述

    指针变量作为函数参数

    例子 —— 对输入的两个整数按大小顺序输出

    #include <stdio.h>
    void main()
    {void swap(int *p1,int *p2);
     int a,b;
     int *pointer_1,*pointer_2;
        scanf("%d,%d",&a,&b);
     pointer_1=&a; pointer_2=&b;
      if(a<b=swap(pointer_1,pointer_2));
     printf("\n%d,%d\n",a,b);
    }   
    void swap(int *p1,int *p2)
    { int  temp;
          temp=*p1;
         *p1=*p2;
         *p2=temp;
    }
    

    在这里插入图片描述

    展开全文
  • 指针变量是一种特殊的变量,它和以前学过的其他类型的变量的不同之处是:用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在C++中用“*”符号表示指向,例如,i_pointer是一个指针变量,而*i_...
  • 值得注意的是,理论上,一维指针变量寻址两次,二维指针变量寻址三次…n维指针变量寻址n+1次,且n可以无限增加,但是实际上,不同的寻址方式比如两次寻址和三次寻址,是在设计之初就被编进指令集中的,指令码的限制...
  • 指针和指针变量

    千次阅读 多人点赞 2019-05-12 22:06:11
    为了表示指针变量和他所指的变量之间的联系,在程序中用“*”表示"指向",如果定义变量 i 为指针变量,那么 *i 就表示指针变量 i 里面存放的地址所指向的存储单元里面的数据,很绕吧,可以在纸上画一画。 ...
  • C语言指针和指针变量

    千次阅读 多人点赞 2019-04-19 16:54:08
    一、指针 概念:当定义一个变量时,系统会为这个变量分配内存,比如,int a,系统会给变量a分配一块内存,大小为in型的4个字节,而且每个字节都会有一个编号,这个编号就是地址,这个编号是计算机抽象出来用于访问...
  • 指针变量与数组的关系及什么是指针数组: 一维数组: 数组原本就是以指针的格式使用的,数组名a相当于char * const a。但这里需要注意的是数组名表示的是一个数组的首地址,是一个地址常量,不能给地址常量赋值,...
  • C语言---指针变量的赋值与运算

    千次阅读 2019-09-18 16:17:25
    指针变量的赋值 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起...
  • 结构体指针变量的定义

    千次阅读 2020-04-07 17:57:34
    最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用。 1.结构体类型定义 定义方式1: Typedef struct LNode { int data; // 数据域 struct LNode *next; // 指针...
  • 指针变量与普通变量的区别

    千次阅读 2020-04-13 12:03:10
    一、普通变量和的本质区别 ...普通变量和指针变量的区别就是,这两种变量的值的所表示的意义不同, 一般来说,普通变量的值,只是供程序员所使用的值,而指针变量的值则不同,它的值存放的是其他变量的地址。...
  • 指针及指针变量

    千次阅读 2018-05-26 19:40:08
    本篇博客就介绍指针和指针变量的相关定义知识。&amp;a就是得到a的地址,其实“指针==地址”,int *p就是定义一个整型地址(指针)变量int a=10;//整型变量存放整型值double b=1.24;//浮点型变量存放浮点型值int ...
  • C语言指针基础知识点(三)--指针变量作为函数参数

    千次阅读 多人点赞 2019-12-01 23:01:20
    C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 指针变量作为函数参数    函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址...
  • 只要是指针,要使用它前就必须保证指针变量的值是一个有效的值 ;否则,它指向的内存一定是垃圾数据!  C语言指针一般在什么时候需要申请内存空间 C语言的内存管理很重要,集魄力和麻烦于一身,看你自己的心态如何...
  • 1.指针变量:指针值(即指针的指向)可以改变的指针,只能指向变量; 2.指针常量:指针值(即指针的指向)不能改变的指针,只能指向变量,但可以修改指向的实体变量的值; 3.常量指针:指向常量的指针,所以不能...
  • 指针变量的运算

    千次阅读 2016-02-26 20:45:44
    指针变量的运算有三种:赋值运算、关系运算与算术运算。 1. 指针变量赋值运算就是将变量的地址赋给指针变量 2. 指针变量的算术运算 指针变量的算术运算主要有指针变量的自加、自减、加n和减n操作。 (1)指针变量...
  • 指针变量占用多少字节

    千次阅读 2019-05-19 18:21:24
    我们讲过,指针变量根据“基类型”的不同有 int * 型,float * 型,double * 型,char * 型等 但是我们前面在讲数据类型的时候讲过,int 型变量占用 4 字节,float型变量占用 4 字节,double类型变量占用 8字节,...
  • C语言结构体(5) 结构体指针变量

    千次阅读 2020-03-30 16:13:17
    C语言提供了基础数据类型,例如char、int等数据类型,可以定义指针变量。那么,结构体类型是用户自己定义的数据类型,同样也可以定义指针变量。结构体类型定义指针变量格式如下: struct 结构体类型名* 指针变量名...
  • 指针变量占用的内存空间大小说明

    千次阅读 2020-05-09 16:27:49
    指针变量占用的内存空间大小根据所使用的操作系统及编译环境而定,指针类型占用的字节数是不同的。 一般而言: 16位机器的代码时,指针占2个字节 32位机器的代码时,指针占4个字节 64位机器的代码时,指针占8个...
  • 通过指针变量访问整型变量

    千次阅读 2020-03-05 18:32:40
    先定义2个整型变量,再定义2个指针变量,分别指向这两个整型变量,通过访问指针变量,可以找到它们所指向的变量,从而得到这些变量的值。 /* Note:Your choice is C IDE */ #include "stdio.h" void main() { int a...
  • 怎样定义指针变量

    千次阅读 2019-05-09 20:32:50
    存放地址的变量称为指针变量,它用来指向另一个对象(如变量,数组,函数等) 定义指针变量的一般形式为:类型名 *指针变量 如:int *pointer_1,*pointer_2; 其中,int为定义指针式必须指定的“基类型”,指针...
  • 指针变量的初始化

    千次阅读 2019-05-14 20:03:35
    那么怎么给一个指针变量初始化呢?即怎么样使一个指针变量指向另一个变量呢?上面的程序实际上已经使用了,即可以用赋值语句使一个指针变量得到另一个变量的地址,从而使他指向该变量。比如: int i, *j; j = &i...
  • 指针变量的类型及含义

    千次阅读 2020-12-24 03:54:23
    2.定义p为指向整型数据的指针变量:int *p 3.定义整型数组a,它有5个元素:int a[5] 4.定义指针数组p,它由4个指向整型数据的指针元素组成:int *p[4] 5.p为指向包含4个元素的一维数组的指针变量:int (*p)[4] 6.f为...
  • 指针变量及其定义

    千次阅读 2019-02-14 14:14:26
    指针和指针变量的区别 一:指针是一个地址,指针变量是存放地址的变量。 指针变量的定义 一: 基类型 *指针变量名 int *i; float *j; (*)表示该变量类型为指针变量类型,指针变量名为i和j不是 *i 和 *j 。 在这里...
  • 首先说一下写这篇文章的原因,在学习实用算法课程期间,发现以前学习的指针相关知识还有偏差,所以在CSDN上面找了挺多相关知识,基本弄明白了怎么回事,以下三篇文章对我帮助很大: ... ...
  • 由于经常要在函数中对结构体对象进行操作,所以函数形参中常常都是传值一个结构体指针变量,自己有时为了偷懒,干脆在定义对象时直接定义结构体指针变量,这样实参就不用取地址了。 这样想是没有错,但是结构体指针...
  • 指针变量声明为const型,这样指针变量始终保持为初值,不能改变,即其指向不能改变 例 #include #include int main() { char cBuff1[100] = "1234"; char cBuff2[100] = "5678"; char * const
  • 指针变量与变量地址

    千次阅读 2017-06-19 15:12:49
    一、基本概念 ...变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。存储地址一般用十六进制数表示,而每一个存储器地址中又存放着一组二进制(或十六进制)表示的数,通常称为该地址的内容。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 980,206
精华内容 392,082
关键字:

指针变量