• 指针(五)


    今天继续对于C语言的指针进行学习,话不多说,进入正题。

    数组作为参数传递【指针传递】: 
    下面通过一系列程序来说明数组作为参数传递是属于指针传弟:
    一维数组:
    编译运行,看结果:
     
    编译运行:
    我们知道“数组定义之后,它的首地址是无法重新指向新地址的”,如下:
     
    编译:
    而请看如下情况:
    编译运行:
     
    说明:当一维数组作为函数参数时,有三种写法都等价,都是int*a
     
    二维数组:
     
    编译:
     
    如果省略了二维数会怎样呢?
    编译:
    说明:
     
    命令行参数:
     
    main函数是程序的入口函数,今天来对其参数进行研究,先通过程序来直观的感受下:
    运行结果:
    分析一下内存模型:
    所以,可以通过循环,将命令行的所有参数都打印出来:
     
     
    对于上面的程序,也能用指针的指针来代替,两种方式是等价的:
    输出结果:
     
    结构体指针:
     
    下面通过代码来进行说明:
    运行结果:
    从运行结果上来看,貌似跟理解有点违背,事实上上面的输出0是不确定的,但是为了确保malloc分配的结构体成员被初始为0,需用到memset函数,用man查看下:
    注意:malloc分配的内存,是没有设置的,对于这个结构体,也就是里面的成员都是没有初始化的,这时可用memset函数进行初始化
    其实对于上面这个,可用一个函数来代替:calloc,查看man帮助:
     
    从上面帮助来看,calloc=malloc+memset
    运行结果一样:
     
    下面介绍一下内存拷贝函数:memcpy
    看具体使用:
    运行:
     
    分开理解:
    结构体定义时不能定义自身结构体变量
    编译:
     
    但可以定义自身的指针:
    编译:
     
    好了,今天的内容学到这,下次再见!!
  • 相关阅读:
    收集的各种学习链接,方便查找
    用python调试Appium和雷电模拟器连接时出现Original error: Could not find 'adb.exe' in PATH
    App自动化测试之Appium环境安装(涉及雷电模拟器和真机)
    元素定位工具ChroPath
    Python+Selenium学习笔记19
    Python+Selenium学习笔记18
    Python+Selenium学习笔记17
    Python+Selenium学习笔记16
    Python+Selenium学习笔记14
    Python+Selenium学习笔记15
  • 原文地址:https://www.cnblogs.com/webor2006/p/3477404.html
Copyright © 2020-2023  润新知