zoukankan      html  css  js  c++  java
  • c语言之指针运算

    //定义一个指针变量
    int *p;

    (1)指针可以进行加减一个整数:p++、p--、p+i、p-i、p+=i、p-=i等

    (2)将一个变量的地址赋值给指针:int a = 1;p = &a;

    (3)将数组首元素的地址赋值给指针:int array[3] = {1,2,3};p = array;

    (4)将数组第i个元素的地址赋值给指针:p = &array[i];

    (5)将函数的入口地址赋值给指针:

    #include<stdio.h>
    #include<iostream>
    int max(int, int);
    int main() {
    
        int (*p)(int, int);
        p = max;
        int res;
        res = p(2, 3);
        printf("最大值是:%d
    ", res);
        system("pause");
        return 0;
    }
    int max(int a, int b) {
        if (a > b) {
            return a;
        }
        else {
            return b;
        }
    }

    (6)将指针p2的值赋值给p1:int a = 2;int *p2 = &a;int* p1 = p2;

    (7)指针可以有空值:p = NULL;

    (8)两个指针变量可以相减:

    #include<stdio.h>
    #include<iostream>
    int max(int, int);
    int main() {
        int a[4] = { 1,2,3,4 };
        int* p1 = a;
        int* p2 = &a[2];
        int p = (p2 - p1);
        printf("p的值是:%d
    ", p);
        system("pause");
        return 0;
    }

    如果两个指针变量都指向同一数组中的元素,则这两个指针之差为两个指针之间的元素个数,上述代码输出为2,因为之间元素为a[1],a[2]。假设变为p1-p2,那么输出结果就是-2,符号表明p1是在p2的后面。

    (9)两个指针可以进行比较:

    #include<stdio.h>
    #include<iostream>
    int max(int, int);
    int main() {
        int a[4] = { 1,2,3,4 };
        int* p1 = a;
        int* p2 = &a[2];
        bool p = p2>p1;
        printf("p的值是:%d
    ", p);
        system("pause");
        return 0;
    }

    比较的是两个指针指向的值的大小。

  • 相关阅读:
    .net做UG NX二次开发(VB.net) / NX Secondry Dev. with .net using VB.net Code
    UGS Object ID 工具 [开源]
    Build a NX Open .NET application
    Open C、Open C++和NXOpen C++混合开发
    UG二次开发技术的研究
    ufun视频教程
    互联网上的阴暗战争
    谈谈UG二次开发的Open和NXOpen
    IBM云计算平台下 Windows Server 2003虚拟机的使用
    使用IBM云计算平台虚拟机
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12128498.html
Copyright © 2011-2022 走看看