• C语言中指针与取地址符&详解


    关于指针与取地址符

    1.什么是指针?
    (1)首先,我们要明白什么叫做指针变量名,对于 int *p,这里的指针变量名不是 p 而是 p ,类似与 Java 中定义数组是 int [] array ,所以我习惯将 p 叫做 int * 类型
    (2)通俗的来说:指针就是地址,通过这段地址就可以找到以它为地址的那个内存单元
    【保存地址使用的就是指针变量,所以是用变量名p=&a,而不是
    p = &a(定义时除外)】
    (3)指针变量必须要初始化,否则不知道指向哪个地址(就是我们常说的野指针)
    (4)指针就是用来存放地址的,并且可以通过这个地址来操作对应的内容。只要知道了一个变量的内存地址,那么我们就可以通过指针来操作块内存空间

    了解了这些之后,看一段代码:

    #include <stdio.h>
    
    int main()
    {
        int n= 7;
        int *p;
        p = &n;		//指针初始化,也可以写作 int *p = &n;
        printf("%d 的地址是 %p
    ",n,p);
        return 0;
    }
    

    在这里插入图片描述
    n是int类型的,而p是int *类型的,所以他们的最后得到的结果的类型完全就不一样了
    int *p定 = &n,&是取地址符,得到的就是内存地址【指针保存地址,&用来取地址】
    为了更好的理解,根据类型匹配:*p = n ;p = &n (= 表示等价于)

    2.如何使用指针
    使用指针和取地址符,解决了值传递只能通过“按值传递”这个问题,可以用指针和取地址符来操作:
    继续看一段代码:

    #include<stdio.h>
    
    int main(void)
    {
    	int n = 7;
    	int *p = &n;
    	printf("数值%d所在的地址是 %p
    ", num, p);
    	printf("指针p所指向的地址为 %p , 该地址上所保存的值为%d
    ", p, *p);
    	*p = 100;
    	printf("指针p所指向的地址为 %p , 该地址上所保存的值为%d
    ", p, num);
    	return 0;
    }
    

    加粗样式
    通过上面的程序和运行结果来看,指针所指的地址是不会改变的,但是可以通过操作符(解引用操作符),来返回指针p所指的对象,我们通过对p的赋值,改变了p指向的地址上的值,从而n的值发生改变

  • 相关阅读:
    IDEA远程仓库版本回滚
    智能风控平台核心之风控决策引擎(三)
    智能风控平台核心之风控决策引擎(一)
    深入理解Oracle的imp/exp 和各版本之间的规则
    oracle忘记用户密码
    Windows下使用cmd启动Oracle EM和sql命令使用+主机身份认证
    jsp调用javabean出现错误HTTP Status 500
    jsp查询页面和结果页面在同一页面显示和交互
    javabean+servlet+jsp程序_个人辛苦探索
    用Eclipse 开发Dynamic Web Project应用程序 【转】
  • 原文地址:https://www.cnblogs.com/Indomite/p/14195267.html
Copyright © 2020-2023  润新知