zoukankan      html  css  js  c++  java
  • c语言指针用法

    一、指针

    int t 定义整型变量
    int *p p为指向整型数据的指针变量
    int a[n] 定义整型数组a,它有n个元素
    int *p[n] 定义指针数组p,它由n个指向整形数据的指针元素组成
    int (*p)[n] p为指向含n个元素的一维数组的指针变量
    int f() f为返回整型函数值的函数
    int *f() p为返回一个指针的函数,该指针指向整型数据
    int (*f)() p为指向函数的指针,该函数返回一个整形值
    int **p p是一个指针变量,它指向一个指向整形数据的指针变量

    二、指针与变量

    三、指针与数组

    指针数组

    (1)定义

    (2)定义形式:类型名 *数组名[数组长度]

    如要将二维数组赋给一指针数组:
    int *p[3];
    int a[3][4];
    for(i=0;i<3;i++)
    p[i]=a[i];
    这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
    所以要分别赋值。

    注:指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便

    数组指针

    (1)定义

    (2)定义形式 类型名 (*指针变量名)[数组长度]

    如要将二维数组赋给一指针,应这样赋值:
    int a[3][4];
    int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
     p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
     p++;       //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]

    所以数组指针也称指向一维数组的指针,亦称行指针。

    注:

    四、指针与字符串

    (1)char* string;string="I love China!";但不可以char string[14];string="I love China!";

    (2)定义字符数组后,在编译时为它分配内存单元,它有确定的地址;而定义一个字符指针,在使用前必须为其指向具体的地址;

    如下面是正确的:

    char *s,str[10];s=str;

    五、指针与函数

    指针函数

    (1)定义:指针函数是指函数的返回值类型是一个指针类型,即本质是一个函数

    (2)定义形式:数据类型 * 函数名(参数列表)

    注:

    函数指针

    (1)定义:指向函数的指针

    (2)定义形式:数据类型 (*指针变量名)(参数列表)

    注:一般传输一函数指针,返回处理后的该指针地址

    I,在给函数指针变量赋值时,只需给出函数名而不必给出参数(因为是将函数入口地址赋给函数指针,而不涉及实参与形参的结合的问题),如:

    int max(int,int);

    int (*p)(int,int);

    p=max;

    II,用函数指针变量调用函数时,只需将指针名代替函数名即可,括号中需要实参,如

    int c;

    c=(*p)(a,b);

  • 相关阅读:
    Python学习2——使用字符串(完整版)
    Python补充4——替换与修改
    Python学习3——列表和元组
    数据结构链表——双向链表
    数据结构链表—— 循环链表
    数据结构链表——静态链表
    LeetCode 61——旋转链表(JAVA)
    LeetCode 2——两数相加(JAVA)
    LeetCode 328——奇偶链表(JAVA)
    HillCrest Sensor HAL
  • 原文地址:https://www.cnblogs.com/gjianw217/p/3257493.html
Copyright © 2011-2022 走看看