第一次写博客,自己只是一个初学者,有不足之处,还望多指教。
指针是一个很重要的概念,在写代码的过程中,指针的正确使用,可以大大提高代码的效率,实现一般传值无法实现的功能(引用的使用以后还会说到)。
首先,先让我们明确这样几个概念:
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));
今天就先到这里吧,写的不好,继续努力!