zoukankan      html  css  js  c++  java
  • 黑马程序员-c语言指针的学习

    c语言的难点和精华部分就是指针,能够将指针完全理解并且将其运用熟练不是一件容易的事情,其中有几个知识点比较绕一些。

    1.数组指针与指针数组的区别。

       数组指针是一个指针,是指向数组的指针,就如同int*,char*型指针,只不过它是指向数组的(首元素),大小为4(32位平台下),通过它就可以做找到整个数组。

     1 #include <stdio.h>
     2 int main(int argc, char *argv[])
     3 {
     4     int a[3][4] = {{0,1,2,4},
     5                    {5,6,7,8},
     6                    {9,10,11,12}};
     7     int (*p)[4];
     8     p = a;
     9     printf("%d",**(p +1)) ;
    10     return 0;
    11 }

    其中 int (*p)[4] 是一个二维的数组指针。

    指针数组是一个数组,数组的元素都是指针而已,看下面代码

     1 #include <stdio.h> 
     2 int main(int argc, char *argv[])
     3 {
     4     int a[3][4] = {{0,1,2,4},
     5            {5,6,7,8},
     6             {9,10,11,12}};
     7    int *p[3];
     8    for(int i=0;i<3;i++){
     9    p[i] = a[i];
    10  }
    11    printf("%d",*p[1]) ;
    12    return 0;
    13  } 

    int *p[3]里面存的都是指针

    2.指针函数和函数指针的区别

    指针函数是一个函数,它的返回值是一个指针而已。其实准确来说没有指针函数这么一说,只有返回值为指针的函数或者参数为指针的函数

    函数指针是一个指针,这个指针指向具体的一个函数。它在程序设计中是非常有用的,可以显著的减少代码量和优化代码结构,下面是一个简单的用法示例。

     1 #include "stdio.h"
     2 
     3 #define OK 1
     4 
     5 int Fun1(int num)
     6 {
     7     printf("The Fun1 value is %d
    ",num);
     8     return OK;
     9 } 
    10 
    11 int Fun2(int num)
    12 {
    13     printf("The Fun2 value is %d
    ",num);
    14     return OK;
    15 } 
    16 
    17 int Fun3(int num)
    18 {
    19     printf("The Fun3 value is %d
    ",num);
    20     return OK;
    21 } 
    22 
    23 
    24 int main()
    25 {   
    26     int i,state;
    27     //定义函数指针 
    28     int (*Fun_p[3])(int num); 
    29     //初始化函数指针 
    30     Fun_p[0] = Fun1;   
    31     Fun_p[1] = Fun2;
    32     Fun_p[2] = Fun3;
    33     
    34     for(i=0;i<3;i++)
    35        state = Fun_p[i](i);
    36     getchar();
    37     return ;
    38 }
  • 相关阅读:
    forms组件、cookie与session
    choices参数、MTV与MVC模型、Ajax、序列化组件、sweetalert搭建页面、自定义分页器
    Django 常用字段,数据库查询优化 only与defer
    django配置代码
    django 模板层、模型层
    Django 请求生命周期、路由层
    centos6.8安装httpd后无法访问
    初次认识dedecms和帝国cms内容管理系统
    遇到一个json解码失败的问题
    关于apache配置映射端口
  • 原文地址:https://www.cnblogs.com/pangjiayang/p/3956339.html
Copyright © 2011-2022 走看看