• 21年4月23问题集(一)


    1(解决)

    数组名的sizeof   与  作为参数传入某函数后的sizeof

    作为参数传递后,形参指向数组的什么?   数组名的地址,数组首元素的地址?

     

    在函数里面定义的数组, sizeof表示整个数组的大小。

    (这个内存块的大小)(元素个数 * 元素该类型的大小)

     

    作为形参传递进去的时候,退化成了指针。Sizeof就是该元素的大小

    (根据该元素的类型)

    这个指针,指向数组首元素的地址

     

     

    2(解决)

    定义   ar[];

    ar   &ar

    如何判断数组在使用的时候,表示的是  数组首元素地址

    数组名地址

     

     

     

    ar,数组名作为数组首元素的地址,它是常性值

    常性值是不能改变自身的,所以ar++  ar=ar+1 是错误

    但是在其基础上进行运算,从而得出结果,是可行的。  

    比如 printf(“%d”,ar+i);  这句是正确的(因为没有改变ar本身的值)

     

    ar+1   &ar+1  之所以有结果,是因为没有改变ar本身的值

    ar+1    表示的是数组首元素的地址加一,加到了第二个元素的地址

    &ar+1   表示已以整个数组为单位进行加一,加到了ar[6]的那个地址位置

    ar     数组首元素的地址

    &ar  数组名的地址

     

     

     

    3(解决)

     

    输出为什么不是5 

    Int br[5]  这个不是在函数内定义的,而是作为一个形参定义的

    在形参里面都退化成了指针。所以5没有意义,啥也不表示。

     

    上面两个都退化成了下面那个

    4(解决)

    如何用指针输出数组的时候,判断指针停止移动

    判断条件用指针       p!=null    p!=nullptr   *p!=0   等

    字符串数组可以用‘’!=*p  判断循环结束

    Int数组呢?

    字符串是特例,因为‘’结尾,所以可以指针自身判断。

    其他的都不行

    比如Int数组,nullptr!=p行不通。开辟的栈内存里,下面肯定还有地址,这样指针(p++)就不为空。而里面有啥数据,又是未知的。

    Linux学习笔记
  • 相关阅读:
    聚会
    Wannafly summer camp Day2
    HDU6627 equation
    2019牛客暑期多校D.Big Integer
    对主席树的理解以及使用
    2019牛客暑期多校训练营(第四场)C.sequence(单调栈+线段树)
    2019 Multi-University Training Contest 1
    浅谈序列自动机
    2019江西省程序设计竞赛
    拉格朗日插值的应用
  • 原文地址:https://www.cnblogs.com/zealwang/p/14693264.html
Copyright © 2020-2023  润新知