C语言几个知识点

1.指针数组和数组指针

  • 指针数组

  形如 type *ptr_arr[n] ,根据C语言声明规则,[]的优先级比*的优先级高,因此ptr_arr先和[]结合生成一个数组,表明此时ptr_arr是一个数组,然后再和*结合。整个表达式表示数组元素为type*类型的一个一维数组。

  • 数组指针

  形如 type (*arr_ptr)[n],根据C语言声明规则,由于增加括号,app_ptr先和*结合生成一个指针,整个表达式表明arr_ptr是一个指向type类型的一个一维数组的指针。

  用法:一般用来指向操作二维数组中的一维数组,如:

      type *arr[m][n];

      arr_ptr=arr; //此时arr_ptr指向arr[0],即*arr_ptr==arr[0],(*arr_ptr)[k]==arr[0][k]

      当进行自增操作时,arr_ptr将跳过二维数组的一整行,如下:

      arr++;//即*arr_ptr==arr[1],(*arr_ptr)[k]==arr[1][k]

    因此数组指针常用作参数来传递二维数组,如:

      void func(type (*arr_ptr)[n],...)  或者

      void func(type arr_ptr[][n],...);

  •   两者区别:ptr_arr是一个数组变量,占有n个指针类型的存储空间; arr_ptr是一个指针变量,只占有一个指针类型的存储空间。

 

 

posted @ 2012-05-19 12:53  beyond_boy  阅读(108)  评论(0)    收藏  举报