zoukankan      html  css  js  c++  java
  • 指针(五)

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

    数组作为参数传递【指针传递】: 
    下面通过一系列程序来说明数组作为参数传递是属于指针传弟:
    一维数组:
    编译运行,看结果:
     
    编译运行:
    我们知道“数组定义之后,它的首地址是无法重新指向新地址的”,如下:
     
    编译:
    而请看如下情况:
    编译运行:
     
    说明:当一维数组作为函数参数时,有三种写法都等价,都是int*a
     
    二维数组:
     
    编译:
     
    如果省略了二维数会怎样呢?
    编译:
    说明:
     
    命令行参数:
     
    main函数是程序的入口函数,今天来对其参数进行研究,先通过程序来直观的感受下:
    运行结果:
    分析一下内存模型:
    所以,可以通过循环,将命令行的所有参数都打印出来:
     
     
    对于上面的程序,也能用指针的指针来代替,两种方式是等价的:
    输出结果:
     
    结构体指针:
     
    下面通过代码来进行说明:
    运行结果:
    从运行结果上来看,貌似跟理解有点违背,事实上上面的输出0是不确定的,但是为了确保malloc分配的结构体成员被初始为0,需用到memset函数,用man查看下:
    注意:malloc分配的内存,是没有设置的,对于这个结构体,也就是里面的成员都是没有初始化的,这时可用memset函数进行初始化
    其实对于上面这个,可用一个函数来代替:calloc,查看man帮助:
     
    从上面帮助来看,calloc=malloc+memset
    运行结果一样:
     
    下面介绍一下内存拷贝函数:memcpy
    看具体使用:
    运行:
     
    分开理解:
    结构体定义时不能定义自身结构体变量
    编译:
     
    但可以定义自身的指针:
    编译:
     
    好了,今天的内容学到这,下次再见!!
  • 相关阅读:
    [转]SVN服务器搭建和使用(二)
    [转]SVN服务器搭建和使用(一)
    BZOJ 2049 Sdoi2008 Cave 洞穴勘测
    BZOJ 1589 Usaco2008 Dec Trick or Treat on the Farm 采集糖果
    BZOJ 2796 POI2012 Fibonacci Representation
    BZOJ 2115 Wc2011 Xor
    BZOJ 3105 CQOI2013 新Nim游戏
    BZOJ 2460 Beijing2011 元素
    BZOJ 3687 简单题
    BZOJ 1068 SCOI2008 压缩
  • 原文地址:https://www.cnblogs.com/webor2006/p/3477404.html
Copyright © 2011-2022 走看看