如何理解指针

如何理解指针,第1张

如何理解指针

指针(编程语言中的一个对象)

1.理解指针定义

 指针是一种以符号形式使用数据存储地址的方法,指针数据的本质就是一个数据地址,系统可以根据该地址快速检索到该地址所存储的数据。或者理解成指针是一个数据类型,用来表示地址。跟int一样,int用来表示整型。 指针类型的变量是一个普通的变量,也就是指针变量,既然是变量就会有自己的类型,也会有自己的值。只不过指针变量的值跟一般变量不太一样,指针变量的值是一个地址。

2.取地址&

&取地址运算符

#include
int main()
{   //格式化输入函数 scanf,在从键盘缓存接收数据时,需要把数据存入内存地址中。
   scanf("%d",&a);//需要对变量进行取地址 *** 作,得到真正的内存空间。
   printf("你输入的数是:%d",a);
  
}

3.*地址指向内存空间的 *** 作

*指针的间接运算符

*的作用是对地址指向的内存空间进行 *** 作(取值、存值);

#include
int main(){
*(&a)=100;//&a为取地址,*内存地址 就代表:地址空间  和a=100所表达意思相同
printf("a=%dn",a);
printf("*(&a)=%dn",*(&a));//*(&a)表示从地址空间取值(去打印)
*(&a)+=5;//对地址空间 进行运算
printf("a=%dn",a);
}

这个代码中有一行代码是*(&a)=100;我后边给它的注释是和a=100所表达的意思相同,那为什么要多此一举?其目的是为了更容易的理解指针,这也就有了一个新的符号&,即取地址运算符

&a表示取到了a的内存地址,*(&a)表示通过*进入了&所取到的a的地址,得到了内存地址里的值,即100

内存地址-------怎么取?-------用&

指针变量--------怎么声明?-------用*

4.指针变量

现有类型 * 指针变量名

例如,int *p;声明了一个指针,存储地址指向的数据为的整型。

#include
int main()
{
  int a=10;
  int *p=&a;//定义指针变量p,p指向a的地址
  printf("%p",p);//打印地址编号
 }

5.指针的移动

#include 
    int main()
    {
      
        int *p=1;
        double *pd=2;
        long long *pll=3;
        char *pc=4;
        printf("现地址:%d   下一个地址:%dn", p, p+1);
        printf("现地址:%d   下一个地址:%dn", pd, pd+1);
        printf("现地址:%d   下一个地址:%dn", pll, pll+1);
        printf("现地址:%d   下一个地址:%dn", pc, pc+1);
    }

指针的加减 *** 作本质上是将所指向的地址向前或者向后移动对应类型的字节宽度。

6.指针变量的字节数

#include 
    int main()
    {   
        int *p;
        double *pd;
        long long *pll;
        char *pc;
        printf("%dn", sizeof(p));
        printf("%dn", sizeof(pd));
        printf("%dn", sizeof(pll));
        printf("%dn", sizeof(pc));
        return 0;
    }

需要注意的是:无论什么类型的指针变量,所占字节长度是固定的,因为指针变量保留的是内存地址的编号,它只能随着32位系统或64位系统而不同。32位就是用4个字节空间保留地址编号,64位就用8个字节空间保留地址编号

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5702807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存