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

    千次阅读 2020-04-24 20:53:08
    如果有一个变量专门用来存放另一变量的地址(即指针),则它称为指针变量” 定义一个指针变量 定义指针变量的一般形式为 基类型 *指针变量名; 说明 可以用赋值语句使一个指针变量得到另一个变量的地址,从而使它...

    指针和指针变量的定义:

    一个变量的地址称为该变量的“指针”
    例如,地址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;
    }
    

    在这里插入图片描述

    展开全文
  • 指针变量是指向指针的变量,是一个存放地址的变量 变量的指针是变量的地址 指针变量的一般形式为: float *pointer_3; char *pointer_4; 指针变量的赋值:(存放的是变量的地址) pointer_3 = &i; pointer_4 =...

    指针变量是指向指针的变量,是一个存放地址的变量

    变量的指针是变量的地址

    指针变量的一般形式为:  

    float *pointer_3;

    char *pointer_4;

    指针变量的赋值:(存放的是变量的地址)

    pointer_3 = &i;

    pointer_4 = &j;

    如何引用指针变量:

    (1)给指针变量赋值:p = &a;

    (2)引用指针变量的值:printf("% o",p);

    (3)引用指针变量指向的变量:printf("%d",*p0);



    展开全文
  • 首先明确的是,在编译的时候编译器会把所有的变量名都转换成相对的内存地址,所以变量名不占内存。内存的最小单位是字节。 1、普通变量 如:inta; 声明一块名为a(首地址)大小为4字节的内存空间,变量代表了一个存储...

     

    首先明确的是,在编译的时候编译器会把所有的变量名都转换成相对的内存地址,所以变量名不占内存。内存的最小单位是字节。
    1、普通变量
    如: int a;
    声明一块名为a(首地址)大小为4字节的内存空间,变量代表了一个存储单元,此时未初始化,所以a只是表示这块地址的名称,没有其他意义。&a取a的地址。*a会出错
    a=1;
    给这块内存初始化值(把1存到a表示的这块地址中),这时a就代表1。


    2、指针变量
    (转自:https://blog.csdn.net/cool_oyty/article/details/8078632)
     在编译器里定义一个指针变量,编译器会给这个指针变量分配一个空间,这个空间里存放的是一段内存的首地址,先解释一段内存,一段内存的大小是与你所定义的指针类型相关的,比如int,这段内存占四个字节(当然要看你的机器是多少位的了),则这段内存的首地址是第一个字节的地址,如char类型,占一个字节,这段内存的首地址就是这个字节的地址,还如结构体类型,此时内存大小要看该结构体的所有属性所占内存之和。现在解释这个空间,编译器给指针分配的空间大小是和CPU的寻址长度相关的,比如32位的CPU,它的寻址长度为32位,那么这个空间也就占四个字节,其实不管你定义什么样的指针类型,这个空间只是用来存地址,只占四个字节,而真正该空间所存的地址是哪一段内存的首地址才和所定义的指针类型相关。 

    作者:Meditating 
    原文:https://blog.csdn.net/wu9797/article/details/78082795 

    int *q;只有地址,没有内存空间。这个地址是随机地址。

    (1)没有申请内存空间:

    int *q;

    *q = 1;

    cout<<*q<<endl;

    错误!指针变量q没有空间,不能直接存放数据。

    注:指针变量赋值后就是一个指针

    (2)申请内存空间:

    int *q = new int;

    *q = 1;

    cout<<*q<<endl;

    正确,存放数据之前给指针变量申请了一个int类型大小的堆内存空间。

    2、对比:

    int *q;

    *q = 1;

    错误!q没有指向一块内存空间,不能直接存放数据。

    int *q, a = 1;

    q = &a;

    正确,两次q的地址不一样。q=&a:q指向变量a所在的内存空间,变量a是一个int型,在内存中有大小为int类型的内存空间。算是间接地给q分配了空间吧。
    --------------------- 
     

    3、指针

    系统为每一个内存单元分配一个地址值,C/C++把这个地址值称为“指针”。如有int i=5;,存放变量i的内存单元的编号(地址)&i被称为指针。

    3、指针变量和指针的区别

    (转自:https://blog.csdn.net/u011555996/article/details/79496203

    指针变量则是存放前述“地址值”的变量,也可以表述为,“指针变量”是存放变量所占内存空间“首地址”的变量(因为一个变量通常要占用连续的多个字节空间)。比如在int i=5;后有一句int *p=&i;,就把i的指针&i赋给了int *型指针变量p,也就是说p中存入着&i。所以说指针变量是存放指针的变量。
    有一个事实值得注意,那就是有不少资料和教科书并没有如上区分,而是认为“指针是指针变量的简称”,如对int *p=&i;的解释是:声明一个int *型指针p,并用变量i的地址初始化;而严格说应该是声明一个int *型指针变量p才对。所以有时看书要根据上下文理解实质,而不能过于拘泥于文字表述。

     

    注: 运算符

    & 返回变量的地址。 &a; 将给出变量的实际地址。
    * 指向一个变量。 *a; 将指向一个变量。
    展开全文
  • 指针变量指针变量地址(c/c++)

    千次阅读 2016-05-16 13:43:27
    然后,既然指针变量s 它本身是指针变量,那么也需要有地址存放变量s,而一旦s确定,那么它的地址就不会发生变化了,这就是为什么循环前后 &s 始终为Ox9ffe38的原因。 s指向的内容可以变化,存放s的地址空间上...

    前几天我舍友问我一道C++的题目,当然一下子没答出来,现在分享一下
    先看代码
    #include<iostream>
    using namespace std;
    int main()
    {
    char *s="ABCD";
    cout<<" 循环前输出s "<<s<<" "<<&s<<endl;
    cout<<"循环语句中的输出s "<<endl;
    do{
    cout<<*s;
    s++;
    }while(*s);
    cout<<endl;
    cout<<" 循环后输出s :"<<s<<"这是(*s):"<<*s<<endl<<"这是 &s "<<&s<<endl;
    }

    运行结果如图
    这里写图片描述
    问题是代码
    cout<<" 循环前输出s "<<s<<" "<<&s<<endl;

    代码
    cout<<" 循环后输出s :"<<s<<"这是(*s):"<<*s<<endl<<"这是 &s "<<&s<<endl;
    中的 &s 的结果一样?这是为什么?明明循环前后 s指向的字符不一样呀?循环前指向字符“A”,循环后指向 空字符。

    首先,明确一点,指针变量s 它本身是指针变量,它的值(即指针变量s的内容)是一个地址,指向字符串“ABCD”的地址。也就是说,s的内容在循环前指向A,循环后指向 null 空字符。这点不难理解。
    然后,既然指针变量s 它本身是指针变量,那么也需要有地址去存放变量s,而一旦s确定,那么它的地址就不会发生变化了,这就是为什么循环前后 &s 始终为Ox9ffe38的原因。
    s指向的内容可以变化,存放s的地址空间上不会变化的。

    不知道以上有没有解答你的问题?乾坤。

    展开全文
  • 对c语言普通变量和指针变量的理解

    千次阅读 2018-05-11 20:02:04
    一、普通变量和的本质区别 在说到普通变量和指针...普通变量的指针变量的区别就是,这两种变量的值的所表示的意义不同, 一般来说,普通变量的值,只是供程序员所使用的值,而指针变量的值则不同,它的值存放的是其...
  • 指针变量是一个变量,它保存了基本类型变量的地址。 如果指针变量p保存了变量a的地址,那么称作p指向了a,*p 就是变量a。 如果p是一个指针变量,*p 表示了以 p 的内容为地址的变量,就是p指向的变量。 *p ...
  • 我们知道在c++中指针变量和指针所指向的内存是两个完全不同的概念,指针变量里边存放的是一个地址,那么我们怎么输出指针变量的值,以及怎么输入指针变量本身的地址呢? char *p="abcde"; cout &lt;...
  • 变量 内存 指针

    2014-05-15 07:25:47
    1、一个变量需要使用一段连续的内存存放,内存中的二进制数,就是变量值。相同的二进制数,根据变量数据类型,表现为不同的变量值 2、可以声明一个变量代表这段内存,对这个变量赋值就是对这段内存写入数据,在...
  • 一个变量的地址称为该变量的指针 例如,地址2000是变量 i 的指针 2.一个变量专门用来存放另一变量的地址(即指针),则它称为指针变量 指针变量的值是地址 正确区分:    例如,可以说变量 i 的指针是...
  • 指针和指针变量

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

    千次阅读 2017-06-19 15:12:49
    一、基本概念   存储单元一般应具有存储数据和读写数据的功能,以8位二进制作为一个存储单元...存储地址一般用十六进制数表示,而每一个存储器地址中又存放着一组二进制(或十六进制)表示的数,通常称为地址的内容。
  • 指针变量及其定义

    千次阅读 2019-02-14 14:14:26
    一:指针是一个地址指针变量存放地址的变量。 指针变量的定义 一: 基类型 *指针变量名 int *i; float *j; (*)表示该变量类型为指针变量类型,指针变量名为i和j不是 *i 和 *j 。 在这里插入代码片 二:int *i...
  • 再次拿起C是2012年8月1日,回想第一次接触C还是大一下学期,大约是2006年。。。。大学C期末考试时我仍记得C考了76分……那年要不是C完全是可以拿一等奖学金的 六年了 之前虽熟悉C但是...只要作到这些,指针也是不难...
  • 指针变量

    2015-08-11 09:08:05
    指针变量是指存放地址的变量。...系统为变量a分配的首地址为0X65FDF4H,pa是存放变量a地址指针变量,即pa中存放的值为0x065FDF4H。 对变量a的访问有两种方式:一是直接按地址0x065FDF4H找到a的存储单元,从而对
  • 通过前面的学习,我们知道把变量的地址存放指针变量中了,让指针变量指向某个变量。例如: int a; //定义int类型的变量a; int *p3; //定义指针变量p3,它是 int* 类型,存放int类型变量的地址; p3 = &a; /...
  • vector容器中存放结构体变量

    千次阅读 2018-09-06 15:15:18
    转载:vector容器中存放...2)存放结构体变量指针 先介绍第一种方式,存放结构体变量到vector容器中,示例如下: 结构体     struct stu { int num; float grade; }; 定义一...
  • 指针=变量的地址,指针变量则是存放变量地址的变量。所以要说指针变量,它的首要概念应该是:它本身是一个变量,然后再去理解他的行为与实现。示例: int a=10; void *b; b=&a; printf("%p/n",b); // *b=20;
  • 指针变量、指针强制类型转换

    千次阅读 2014-06-14 16:39:07
    一、指针变量
  • C++变量指针

    千次阅读 2017-04-23 13:24:46
    指针变量是一种特殊的变量,它和以前学过的其他类型的变量的不同之处是:用它来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在C++中用“*”符号表示指向 或表示取值,例如,i_pointer是一个指针...
  • 1. 什么是指针常量?... //错误,name1指针,不能变,一个指针类型的变量存放的是地址,所以不能把a的地址赋给name1 *name1 = b //可以注意:若指针常量初始化为了字符串,则不可以对其指向的内容进...
  • 指针变量赋值地址

    千次阅读 2020-02-09 20:23:15
    一个指针变量可以可以通过不同的方式获得一个确定的地址值,从而指向一个具体的对象(每当一个指针中存放了一个变量的地址的时候,我们就说这个指针指向了这个变量)。 int k=1,*q,*p; q=&k; 这时可以说,q指向...
  • 怎样定义指针变量

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

    千次阅读 2019-05-09 16:00:16
    通过地址能找到所需的单元变量地址形象化的称为指针指针式通过地址来体现的,地址指向所需的单元变量,即通过指针能够找到以它为地址的内存单位 存储单位的地址 存储单位的内容 对变量的访问都是通过地址...
  • C语言的变量是放在内存中的 每个变量都有个地址 地址就是变量在内存中所存放的地方的位置 而&符号 就能够获取到指定变量地址 它是C语言中的取地址符 获取变量地址 它的操作数必须是变量 而不能对没有地址的...
  • 谈谈JavaScript中的变量指针和引用

    千次阅读 2018-03-09 16:39:24
    变量a的值实际上描述的是这组存储单元中存放的具体信息。 例如,在JS中 var a; a=10; 第一个语句在存储器中指定了一组存储单元,并命名为a; 第二个语句在这组存储单元中存储了数字10。 变量a的值为10实际...
  • 如果能够将取得的变量地址传递给一个函数,能否通过这个地址在那个函数内访问到外面的变量?答案是肯定的。scanf(&amp;amp;amp;...指针类型的变量就是保存地址变量,就是保存&amp;amp;a
  • 1、指针是一个变量,占用内存空间,用来保存地址
  • 1.指针变量的值。指的是P本身的值,写作P,在这里是a的地址,类型为int型; 2.指针地址的值,指的是p的地址值,写作&amp;p,这个地址代表的内存,存储出是P的值,类型为**型,也就是二级指针; 3.指针指向的值,...
  • 指针及指针变量

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 287,586
精华内容 115,034
关键字:

存放地址的变量称为指针变量