单片机C语言指针变量

C语言的指针及指针传递

概述

C语言中指针是一个神奇的东西,可以为编程带来极大方便。但使用不当又会产生不可预料的结果,需要大家慎重。下面用Arduino Nano编辑一段程序,看如何更好的使用C语言的指针。

指针及其应用

首先在程序的开始部分先定义两个变量:

unsigned char Pixel[128];
unsigned char *pixel_pt;

第一个变量Pixel是一个数组,同时也是一个数组的指针。*pixel_pt是一个无符号变量的指针。下面用程序来说明如何使用指针型的变量。

void setup() 
{
  Serial.begin(115200);
  pixel_pt = Pixel;
  for (unsigned char i = 0; i < 128; i++)
    *pixel_pt++ = i;  
}

void loop() {

  if(Serial.available() > 0)
  {
    incomingByte = Serial.read();
    // printing title
    Serial.print("No");
    Serial.print("\t\t");
    Serial.print("Pixel");
    Serial.print("\t\t");
    Serial.print("*pixel_pt");
    Serial.println();
    pixel_pt = Pixel;      // 地址指针又指向Pixel[0]
    for (unsigned char i = 0; i < 128; i++)
    {
      Serial.print(i);
      Serial.print("\t\t");
      Serial.print(*pixel_pt++, HEX);
      Serial.print("\t\t");
      Serial.print(Pixel[i], HEX);
      Serial.println();
    }
      pixel_pt = Pixel;
      pixel_pt++;
      pixel_pt++;
      pixel_pt++;
      pixel_pt++;
      pixel_pt++;
      pixel_pt++;
      Serial.print("\r\n");
      Serial.print(Pixel[6], HEX);
      Serial.print("\r\n");  
      Serial.print(*pixel_pt, HEX);
      Serial.println();
      Serial.print(pixel_pt[6], HEX);
      if (memcmp(&pixel_pt[6], &Pixel[0x0C], 1) == 0)
        Serial.print("\r\nThe compare is OK");
      else
        Serial.print("\r\nThe compare is not OK");
  }
 
  delay(1000);  
}

运行结果

No Pixel *pixel_pt
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
… 省略
126 7E 7E
127 7F 7F

6
6
C
The compare is OK

注意,在程序中使用了指针操作,pixel_pt++命令,相当于Pixel[i++]变址。用pixel_pt[6]也可以对地址变化后的第六个元素进行寻址。用Serial.print(pixel_pt[6], HEX);输出结果是C。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值