指针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));

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

原文地址:https://www.cnblogs.com/gstblog/p/3660143.html