【C语言】指针入门

       指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器中的寄存器。简单来说,指针  ==‘地址’。
      指针是一种变量,也有数据类型和相应的地址。
       1.指针变量的定义
       定义普通变量格式为:数据类型 变量名;指针变量定义如下:
int *p1;//定义了一个整型指针变量p1
char *p2;//定义了一个字符型指针变量p2
double *p3;//定义了一个浮点型指针变量p3

     这里 引出了一个新的符号“*”,指针运算符 "*" 是一个单目运算符,通常称为间接访问运算符或解引用运算符。“*”的作用是跳到指针所指向的变量,简称解引用。指针变量只比普通变量多一个解引用。
       2.指针的赋值
       符号“&”是取地址符,就是取变量的地址。
int a = 10;//整型变量存放整型值
double b = 23.4;//浮点变量存放浮点值
int *p = &a;//定义一个整形地址(指针)变量p存放为a的地址即p=1000(假设a的地址为1000)

       3.指针的使用
int a = 10;
int b = 20;
int *p = &a;
*p = 100;//a = 100
p = &b;
*p = 200;//b = 200
int **pp = &p;//a -> &a:int -> int *; p -> &p:int * -> int **
	      //int **p2 = &&a; error
*pp = &a;//p = &a;(*pp = p)
**pp = 1000;//a = 1000;
       4.关键点 
     (1)以下三个是不同的操作,赋值操作与使用操作不用。
       int *p;定义一个整型指针类型的变量P
       p=&a;//赋值操作,将a的地址赋值给p
       *p=20;//使用p,借用p来访问a,对a的值进行修改
     (2)二级指针
       int *p;
       int **pp=&p;//定义二级整型指针变量**pp,并用p的地址对其赋值。**pp即指向p。
                            //只能对指针取二级地址,不能对常量取二级地址。如 int **p2 = &&a 错误 
      *pp = &a;//p = &a;(*pp = p) 
      **pp = 1000;//a = 1000 
    (3)不能将不是同一类型的变量地址赋值给指针。如:
      int a = 10;
      char b = 20;
      int *p = &a;
      p = &b;//int * = char * //error 
      //p = 1000;//error  
    (4)指针的大小:不管为几级指针,32位平台(x86)占4个字节,64位平台(x64)占8个字节



猜你喜欢

转载自blog.csdn.net/PinkBananA_/article/details/80461065