美文网首页
C语言- 指针

C语言- 指针

作者: 小李不木 | 来源:发表于2019-06-10 12:54 被阅读0次

 在C 语言中,指针的意义是重大的,因为指针能够根据一个地址值,访问对应的存储空间从而改变变量的值,这比之前的给变量赋值更加的方便,简洁。

1 变量的使用格式:

      变量类型   * 变量名;

   * 是指针运算符。访问指针p指向的存储空间。

  * p 是指访问指针p 所指向存储空间里的数据。

  % p 输出指针里面存储的地址值。

 指针变量也是变量所以在使用前一定要先定义,和变量定义差不多要有指针的类型还有指针名。

 注意:1>: 指针变量只能存储地址值。

             2>:变量名前的类型代表变量只能指向此种类型的数据。

              例如:int  * p; 代表指针变量p只能指向int类型的数据。

            3 >: 清空指针   p = 0 ;

                                     p = NULL;

2:指针初始化和变量初始化基本类似:

例如:     # include  <stdio.h >

            int  main  ()

         {  int  a ;

            a = 10;

           int  * p ;

            p= &a;   

            printf (" a = % d \n", *p);

            return  0;

                          }

 这行代码运行后所输出的结果就是a 的值  是10, 因此我们知道利用指针也可以间接的取出变量的值。

3:也可以利用指针同时返回多个返回值。

例如:  用一个函数同时返回两个数的和与差。

    #include  <stdio.h>

int  sumandminus(int  n1, int n2, *n3);

   int   main ()

  {

     int  a  = 10;

    int   b  = 7;

     int   sum;

    int   cha ;

     sum =  sumandminus(a,b,&cha) ;    

    //  把变量cha 的地址 给指针变量n3 

     return  0;

             }

  int   sumand minus  (intn1 , intn2 ,int *n3   )

  {

        *n3 = n1 + n2;

//  改变指针变量n3 的值 cha 的值也就改变了。 间接实现了返回两个返回值的要求。

        return  n1+ n2;

      }

      4:   指针指向数组

      例如:int  arry [5] = {1,2,3,4,5};

                 int  *p;

                p=arry;  

//  定义了一个指针变量p  并且使p 指向 arry 数组。因为数组名代表数组地址,也是数组首元素的地址。

    数组元素的访问方式:  1: 数组名  [下标];

                                               2: 指针变量名  [下标];

                                               3:*(p+i);

       指针变量 + 1,究竟加多少,取决于指针变量所指向的类型,因为指针里面存储的是地址,因此指针变量+1 相当于指针指向的地址值加上相应类型在内存中所占的字节数。即指向下一个同类型的数据。例如 int  型相当加上4 ,char 相当于加上 1 .....

       任何指针不管是什么类型在内存中都是占据8个字节的存储空间。指针定义类型的作用是为了取值和赋值时知道这个指针取值和赋值的字节范围,从指针变量所指向的地址开始取值或赋值相应的字节。不然取值和赋值无法正确的进行。

      5: 指针指向字符串

  指针可以指向数组,也可以指向字符串。

例如: char  * name = " it";

     //  定义一个指针变量name  指向字符串的首字符。

          printf (" % c \n",  *name);

    //    输出一个字符,也就是name的 首字符。

         printf ( " %s \n", name );

//    输出整个字符串,name 指针指向的是字符串的地址,也就是首元素的地址。知道遇到\0时字符串结束。

  但是指针指向的字符串不能再重新赋值,因为此时他们作为字符串常量存储在常量区。而数组字符串可以修改,因为数组字符串是变量。

例如: char  name2 [4]={'i','t','\0'};

               name2[0]='T';

            是允许的,而*name [0]='T'; 是错误的。

因此数组字符可以使用于内容需要经常修改的场合。

    指针字符串使用于 内容不需要修改,并且这个字符串经常使用的场合。

 6:指向指针的指针

例如:  int  a = 10;

             int  *p;

             p= &a;

       //  定义一个指针变量P,并且指向变量a 。

            int  **p2;

            *p2=&p;

         //  定义一个指针变量p2 ,并且指向指针p。

p2里存放的是指针p的地址,指针p里面存放的是变量a 的地址。

7:返回指针的函数

例如: char  test ()

{

 return  'a'; 

 }

      //   这个函数只能返回一个char 类型的字符a .

           char  *test2 () 

  {return  "jack"  ;  }

     //   利用返回指针函数可以返回一个字符串 jacke。

8:指向函数的指针

  定义:函数返回值类型   (*变量名)   (形参列表);

            变量名 =  函数名;

//     定义一个指向函数的指针变量,并且初始化指针变量,使之指向函数地址。

(*变量名)是固定模式,表示一个指向函数的指针。

或者定义时直接初始化:

函数返回值类型   (*变量名)   (形参列表)= 函数名;

            间接调用函数:  变量名 (形参列表);

                                       函数名(形参列表); //   直接调用

                                      (*变量名) (形参列表);

例如:int   sum (int  a , int b )

{     return  a+ b;  }

 int  (*p)   (int , int );

   p= sum;

  调用函数时可以直接调用: sum  (1,2);

                            间接调用:p (1,2);

                                              (*p)(1,2);

相关文章

  • C语言05- 指针

    C语言05- 指针 13:指针 指针是C语言中的精华,也是C语言程序的重点和难点。 13.1:指针定义与使用 指针...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言指针总结大学霸IT达人

    C语言指针总结大学霸IT达人 C语言的指针是C语言区别其它语言的最主要的特定之一。有了指针,C语言就可以抛开所有束...

  • 带小白学C语言指针

    C语言里指针才是C语言的开始和指针;C语言里基本所有东西都是由指针演变而成; 指针是指向地址的变量,类型就是指针...

  • 在Swift中使用C语言的指针

    在Swift中使用C语言的指针 在Swift中使用C语言的指针

  • [Swift]结构体指针操作

    C语言的指针操作 在c语言中申明一个变量并通过指针修改该变量的值 a value is 2 c语言操作结构体指针操...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • iOS开发 -- C语言基础8(指针)

    iOS开发 -- C语言基础8(指针) 指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很...

网友评论

      本文标题:C语言- 指针

      本文链接:https://www.haomeiwen.com/subject/vpxzxctx.html