ljy的学习日记

  1. 指针变量在使用前必须赋值

    没有为什么,就是必须赋,否则它会指向一个不确定地方,给它指的地方赋值是没用的哈!例如这样,不行no!(详细见收藏吧)
    未经赋值的指针变量不能使用, 否则将造成系统混乱,甚至死机。
    这是收藏里说的...
     
  2. 形参(形式参数)、实参(实际参数)都是出现在函数调用里的东西!


    形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。

    实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 

    形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。 

    函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

    (形参不是指针哦)
     

    而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。

    (形参是指针时的特殊情况)
     

  3. 不能企图通过改变形参的值而使指针实参的值改变,但是可以改变实参指针变量所指的值。

       拿这道题举例来说,意思是

    “只改变了形参的指向(也就是说形参的值),不能改变a和b(指针实参的值),但是改变了*p1和*p2的值(实参指针变量所指的值)!”

这句话其实也没什么特别深层次的内涵,就是理解就行...但我现在应该对实参形参有了更深的理解了吧......多复习,不会忘

4.全局变量、局部变量(动态、静态)

这个图挺有意义 以后可以回来看看 说不定有帮助 

5.全局变量怎么定义

收藏了一篇还挺有用的文章......

问题如下:今天调试系统的时候,需要定义几个全局位变量,定义好后一编译,发现错误一大堆,错误基本都是位变量定义时产生的。

解决方法:通常的做法是建立一个包含系统所有全局变量的.h文件,系统用到的所有全局变量都定义在该文件内,文件名可以用Global修饰一下。在该文件中定义某个全局变量的时候需要用extern声明该变量为外部变量。

extern unsigned char(类型) SysEventCounter(变量名); <----这里是关键,不能对该变量赋值,只能声明,赋值就会报错。

上述声明是写在.h文件中的。其他.c文件若要用到该变量,直接包含该.h文件就可以了

如果想要赋初值,可以在用到它的.c文件中这样写:

unsigned char SysEventCounter = 0;

不用赋初值时,直接

unsigned char SysEventCounter;

就可以了。(意思应该是 和int m这种一样的定义方式,但是要有这个定义)

注意:只需要在一个.c文件中写即可,其他.c文件直接可以用。如果在其他.c文件中也这样写会产生重复定义的错误。

/*对上面这个注意我自己解释一下,一般是写在main函数的那个.c文件里吧,我是写在main函数前的,因为总是从main开始执行嘛。

其实就是哪个要最开始先用这个变量,在那个函数之前定义就好吧(这我不确定),所以这就牵扯出那个问题:是不是在任意一个.c文件定义都可以?

虽然那个收藏夹里说可以,但不一定真的可以,但应该大概率可以!哦我想通了 没错就是可以。

以及在main函数的那个.c文件里,它是否一定要放在main函数前面我也不确定。

虽然但是,我觉得以上这两个也不太需要确定。总之,放在main函数前一定不会错。*/

经过以上一番神经病的挣扎,我已经确定上面那段引用的收藏说的完全是对的!!

我自己总结一下原理吧:extern指的是外部变量,我们虽然想要的是全局变量(它在函数外部)没错,但在多文件中,跨文件时这个全局变量是属于外部的,尽管它是全局的(也属于静态存储区)。所以除了在第一个(可以是任意一个)文件中定义的变量是常规的以外,其他想要用到它的文件都要加extern!至于把extern和变量放头文件只是为了方便引用,我们也可以想用一次写一次啊,没问题的。

当然,以上属于多文件情况,如果是单文件情况,emmm也没必要想这么多了,不用extern。

最后在搞这个多文件的全局变量!!还要差缺补漏啊......

晚上9点40分 一切都结束了!这个项目全部完成!!

祝今晚好眠。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值