zoukankan      html  css  js  c++  java
  • 指针1

        第一次写博客,自己只是一个初学者,有不足之处,还望多指教。

        指针是一个很重要的概念,在写代码的过程中,指针的正确使用,可以大大提高代码的效率,实现一般传值无法实现的功能(引用的使用以后还会说到)。

        首先,先让我们明确这样几个概念:

         1.什么是指针?说白了,指针就是一组地址,通过这个地址,我们可以方便的找到所需要的变量。

        2.指针变量的声明。指针的声明,必须要指明所指向的变量类型(正所谓“类型为王”),如  Type *name,Type 指数据类型,name是指针变量名(int *p,即指指向整型变量的指针)。

              3.指针的内容为所指向变量的地址,当我们访问指针是,提取指针内的地址,通过地址找到所指变量。

              4.指针也有自己的地址。

              5.任何指针的大小都为四个字节。

        现在,让我们通过一小段代码了解以上内容。

        在代码中声明了一个整型变量,一个指向整型变量的指针,和一个指向指针的双重指针。

        从代码以及运行结果可以明显的看出,指针p指向整型变量a,p的内容是a的地址,而*p的值为a的值,即p指向a。双重指针dp指向p。可以发现,无论是一般变量,还是指针变量,一方面都有其自己的值,另一方面又有其自己的地址。

     1 int a;
     2 int *p;
     3 int **dp;
     4 
     5 a=0;
     6 p=&a;
     7 dp=&p;
     8 
     9  
    10 printf("the val of a:                         %d\n",a);
    11 printf("the val of p:                         0x%x\n",p);
    12 printf("the val of dp:                        0x%x\n",dp);
    13 printf("the val of *p:                        %d\n",*p);
    14 printf("the val of *dp:                       0x%x\n",*dp);
    15 printf("the val of **dp:                      %d\n",**dp);
    16 printf("the address of a:                     0x%x\n",&a);
    17 printf("the address of p:                     0x%x\n",&p);
    18 printf("the address of dp:                    0x%x\n",&dp);

         最后,用一小段代码证明一下,指针占字节的大小。

       从运行结果来看,无论我们声明了一个指向什么类型的指针,也无论指针所指类型所占字节的大小,指针所占字节始终都是4个字节(注意p++的含义)。

     1 int i;
     2 char ch;
     3 double d;
     4 float f;
     5 long int li;
     6 
     7 int *ip;
     8 char *cp;
     9 double *dp;
    10 float *fp;
    11 long int *lp;
    12 
    13 ip=&i;
    14 cp=&ch;
    15 dp=&d;
    16 fp=&f;
    17 lp=&li;
    18 
    19 printf("sizeof int:        %d\n",sizeof(i));
    20 printf("sizeof char:       %d\n",sizeof(ch));
    21 printf("sizeof double:     %d\n",sizeof(d));
    22 printf("sizeof float:      %d\n",sizeof(f));
    23 printf("sizeof long int:   %d\n",sizeof(li));
    24 
    25 printf("\n\n");
    26 
    27 printf("sizeof int*:       %d\n",sizeof(ip));
    28 printf("sizeof char*:      %d\n",sizeof(cp));
    29 printf("sizeof double*:    %d\n",sizeof(dp));
    30 printf("sizeof float*:     %d\n",sizeof(fp));
    31 printf("sizeof long int*:  %d\n",sizeof(lp));

          今天就先到这里吧,写的不好,继续努力!

  • 相关阅读:
    day23-json、pickle、configparser、hashlib、suprocess模块
    day22-时间模块、random模块、os模块、sys模块
    day21-py文件作用,导包、模块搜索路径
    day20-python-二分、面向过程思想、函数式、模块
    day19-python-叠加装饰器分析、yield、三元、生成式、递归
    day18-python-装饰器、迭代器、生成器
    day17-python-装饰器
    day16-python-函数对象、函数嵌套、闭包函数
    搭建yum本地源_阿里云CentOS服务器初始化设置
    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了
  • 原文地址:https://www.cnblogs.com/gstblog/p/3660143.html
Copyright © 2011-2022 走看看