C言语指针的复杂示例

网友投稿 299 2022-10-29


C言语指针的复杂示例

#include  sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void ShiftLeft(unsigned char *p); void main(){ unsigned int i; unsigned char buf = 0x01; ENLED = 0; //使能选择自力 LED ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; while (1){ P0 = ~buf; //缓冲值取反送到 P0 口 for (i=0; i<20000; i++); //延时 ShiftLeft(&buf); //缓冲值左移一位 if (buf == 0){ //如移位后为 0 则重赋初值 buf = 0x01; } } } /* 将指针变量 p 指向的字节左移一位 */ void ShiftLeft(unsigned char *p){ *p = *p << 1; //应用指针变量可以向函数外输入运算后果 }

这是一个运用指针完成流水灯的例子,地道是为了讲指针而写如许一段程序,程序中传递的是 buf 的地址,把这个地址直接传递给函数 ShiftLeft 的形参指针变量 p,也就是 p 指向了 buf。比照之前的函数挪用,人人能否看明确,假如是通俗变量传递,只能单向的,也就是说,主函数传递给子函数的值,子函数只能运用却不克不及改动。而如今我们传递的是指针,不只仅子函数可以运用 buf 里边的值,并且还可以对 buf 里边的值停止修正。此外再强调一句,只需是*p 前边带了变量类型如 unsigned char,就是表现界说了一个指针变量 p,而履行代码中的*p,是指 p 所指向的内容。经过实际的进修和如许一个例程,我想人人对指针应当有概念了,至于它的灵敏使用,需求我们在后边的程序中渐渐去领会,实际上就不再过多赘述了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 给PPT添加动画效果的示例
下一篇:C言语指针变量的声明
相关文章

 发表评论

暂时没有评论,来抢沙发吧~