c指针

1. 指针就是内存中的一个地址; 程序中定义了一个变量,进行编译时就会给该变量在内存中分配一个地址,通过访问这个地址可以找到所需的变量,这个变量的地址称为该变量的指针;

2. 定义指针变量  类型说明 * 变量名  ;  *表示该变量是一个指针变量

  指针变量的赋值 不仅需要定义,必须赋予具体的值 地址运算符& 来表示变量的地址  & 变量名  ; &a 表示变量a的地址

  俩种赋值方式    int a; int *p = &a;        int a; int *p; p = &a;

  不允许把一个数赋予指针变量  

  指针变量的引用:  引用指针变量是对变量进行间接访问的一种形式   * 指针变量;

  & 返回一个操作数地址的单目运算符,叫作取地址运算符 p = &i; 将变量i的内存地址赋给p,地址是该变量在计算机内部的存储位置

  * 是单目运算符,叫作指针运算符,作用返回指定的地址内变量的值;

  &*p 先*运算, 相当于取地址   *&a 先进行&运算, 相当于取地址的值;

  指针自加自减运算,按照它所指向的数据类型的直接长度进行增或减;

  一维数组的名称就是数组在内存中的首地址,定义一个指针变量,将数组的首地址传给指针变量,则指针就指向了这个一维数组;int *p,a[10]; p = a;

  指针的方式引用一维数组的元素, *(p+n) 表示各个元素;

  二维数组 &a[m][n] 就是 第m行n列元素的地址; *(*(a+n)+m)   *(a[n]+m) 表示第n行m列元素   *(a+i) 与a[i] 是等价的

  使用字符指针指向一个字符串,此时可不定义数组   char *string = "hello";  把字符串中第一个字符的地址赋给指针变量string;

  指针数组:一个数组,其元素均为指针类型数据,每一个元素都相当于一个指针变量;char * mo[] = {"AA","bb","cc"};

  指向指针的指针变量,当一个指针变量用于指向指针类型变量时, 类型标识符  ** 指针变量名;  int **p; 

  指针变量做函数参数,

  值传递的概念,函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,在函数调用过程中,形参的值发生改变,实参的值不会发生变化; 指针变量做函数参数也是如此,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所值变量的值;  

  指针变量也可以指向一个函数,一个函数在编译时被分配一个入口地址,该入口地址就称为函数的指针,可以用一个指针变量指向函数,通过该指针变量调用;

  类型名  *函数名(参数列表);

 

posted @ 2018-08-30 22:40  清风拂山岗li  阅读(124)  评论(0编辑  收藏  举报