zoukankan      html  css  js  c++  java
  • C语言学习笔记--指针概念

    指针也是一种变量,占有内存空间,用来保存内存地址,在32位系统中指针的占用的内存大小为4个字节

    1.*号的意义

    1)在指针声明时*号表示所声明的变量为指针

    (2)在指针使用时,*号表示取指针所指向的内存空间中的值。

         ①*号类似一把钥匙,通过这把钥匙可以打开内存,读取内存中的值。

        ②变量 p 保存着变量 i 的内存地址,即 p==&i, *p==i

    #include <stdio.h>
    int main()
    {
        int i = 0;
        int* pI;
        char* pC;
        float* pF;
        pI = &i;
        *pI = 10;
        printf("%p, %p, %d
    ", pI, &i, i); //p == &i
        printf("%d, %d, %p
    ", sizeof(int*), sizeof(pI), &pI);
        printf("%d, %d, %p
    ", sizeof(char*), sizeof(pC), &pC);
        printf("%d, %d, %p
    ", sizeof(float*), sizeof(pF), &pF);
        return 0;
    }

    2.传值调用与传址调用

    1)指针是变量,因此可以声明指针参数

    2)当一个函数体内部需要改变实参的值,则需要使用指针参数 

    3)函数调用时,实参值将复制到形参

    4)指针适用于复杂数据类型作为参数的函数中

    #include <stdio.h>
    int swap(int* a, int* b)
    {
        int c = *a;
        *a = *b;
        *b = c;
    }
    
    int main()
    {
        int aa = 1;
        int bb = 2;
        printf("aa = %d, bb = %d
    ", aa, bb);
        swap(&aa, &bb);
        printf("aa = %d, bb = %d
    ", aa, bb);
        return 0;
    }

    3.常量与指针

    1)几种情况 

        const int* p; //p 可变,p 指向的内容不可变

        int const* p; //p 可变,p 指向的内容不可变

        int* const p; //p 不可变,p 指向的内容可变

        const int* const p; //p 不可变,p 指向的内容不可变

    2)口诀:左数右指 

        const 出现在*号的左边时,指针指向的数据为常量
        const 出现在*号的右边时,指针本身为常量

    参考资料:
    www.dt4sw.com
    http://www.cnblogs.com/5iedu/category/804081.html

  • 相关阅读:
    远程线程注入与CreateRemoteThread
    游戏修改器编写原理
    软件保护技术常见保护技巧
    反跟踪技术
    C++用static声明的函数和变量小结
    PE文件格式分析及修改
    MMX指令集在C++中的使用
    HOOKAPI之修改IAT法则
    如何获取 程序加载后的内存起始地址
    Java线程中断的本质和编程原则
  • 原文地址:https://www.cnblogs.com/CoderTian/p/5906212.html
Copyright © 2011-2022 走看看