网站风格怎么写,低价网站空间,精准扶贫网站建设的意义,小型工作室创业项目指针 C语言指针是一种保存变量地址的数据类型。它可以让程序直接访问内存中的数据#xff0c;而不需要通过变量名来访问。指针变量存储的是一个地址#xff0c;这个地址指向内存中的某个位置#xff0c;该位置存储了一个值。 在C语言中#xff0c;可以使用运算符取得一… 指针 C语言指针是一种保存变量地址的数据类型。它可以让程序直接访问内存中的数据而不需要通过变量名来访问。指针变量存储的是一个地址这个地址指向内存中的某个位置该位置存储了一个值。 在C语言中可以使用运算符取得一个变量的地址同时可以使用*运算符来访问指针所指向的内存地址中的值。 指针的使用可以提高程序的效率因为它能够直接操作内存中的数据。但是它也需要谨慎使用因为使用不当会导致程序出现无法预期的错误。
1. P0 口显示指针运算结果
可以通过以下步骤在 51 单片机 P0 口显示指针运算结果 首先定义一个指针变量指向需要进行运算的值。例如 unsigned int *ptr; // 定义一个指向 unsigned int 类型变量的指针 在程序中对指针进行运算操作得到运算结果。例如 *ptr 100; // 将指针所指向的变量设为 100 *ptr 50; // 将指针所指向的变量加上 50得到 150 将运算结果转化为字符串以便在 LCD 显示屏或者数码管上输出。可以使用 sprintf 函数将整数转化为字符串。例如 char str[10]; // 定义一个字符串数组用于存放转化后的字符串 sprintf(str, %d, *ptr); // 将指针所指向的变量转化为字符串 将字符串输出到 P0 口。需要先将 P0 口配置为输出模式然后使用 putchar 函数将字符串逐个输出到 P0 口。例如 P0 0xff; // 将 P0 口配置为输出模式 for (int i 0; i strlen(str); i) { putchar(str[i]); // 将字符串逐个输出到 P0 口 }
注意需要在程序中引入 stdio.h 头文件以使用 sprintf 和 putchar 函数。
#includereg51.h
void main(void)
{ unsigned char *p1,*p2; //定义无符号字符型指针变量 p1,p2 unsigned char i,j; //定义无符号字符型数据i25; //给 i 赋初值 25 j15; p1i; //使指针变量指向 i 对指针初始化p2j; //使指针变量指向 j 对指针初始化P0*p1*p2; //*p1*p2 相当于 ij,所以 P02515400x28 //则 P00010 1000B结果 P0.3、P0.5 引脚 LED 熄灭其余点亮while(1) ; //无限循环防止程序“跑飞”
}
2. 用指针数组控制 P0 口 8 位 LED 流水点亮 C语言指针数组是一个数组而数组中的每个元素都是指针。也就是说每个元素存储的是一个地址这个地址指向另一个变量的地址。 使用指针数组可以方便地存储多个指针并操作这些指针。例如可以使用指针数组来存储一组字符串然后循环输出每个字符串。
指针数组的声明方式如下
type *name[count];其中type表示指针指向的数据类型name是指针数组的名称count是指针数组的长度。
例如下面的代码声明了一个包含5个整型指针的指针数组
int *ptr_array[5];可以使用下标来访问指针数组中的每个元素例如
int a 10;
int *p a;
ptr_array[0] p;
printf(%d\n, *ptr_array[0]); // 输出 10代码示例
#includereg51.h
/*************************************************
函数功能延时约 150ms (3*200*250150 000μs150ms
*************************************************/
void delay150ms(void)
{ unsigned char m,n; for(m0;m200;m) for(n0;n250;n) ;
}
/*************************************************
函数功能主函数
*************************************************/
void main(void)
{ unsigned char code Tab[]{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char *p[ ]{Tab[0],Tab[1],Tab[2],Tab[3],Tab[4],Tab[5], Tab[6],Tab[7]}; unsigned char i; //定义无符号字符型数据while(1) { for(i0;i8;i) { P0*p[i]; delay150ms(); } }
}
3. 用数组的指针控制 P0 口 8 位 LED 流水点亮 C语言中数组名本身就是一个指向数组首元素的指针。因此可以通过数组名来访问数组元素也可以将数组名作为指针来操作。下面是一些常见的数组指针用法 声明数组指针可以用指针变量来表示一个数组可以写作int *a 数组指针的初始化可以用数组名来初始化指针变量例如int arr[] {1, 2, 3}; int *a arr; 数组指针的访问对于指针变量a可以使用a[i]来访问数组元素 指针变量的算术运算指针变量a可以进行加法和减法运算例如a、a--、a3等表示将指向下一个或上一个元素 指针变量的比较可以用指针变量来比较两个数组元素的地址大小例如ab表示a所指向的元素在b所指向的元素之前。 需要注意的是数组指针不同于指向数组的指针后者指向的是整个数组空间的首地址可以通过指针的加减操作来访问不同的数组元素。
#includereg51.h
/*************************************************
函数功能延时约 150ms (3*200*250150 000μs150ms
*************************************************/
void delay150ms(void)
{ unsigned char m,n; for(m0;m200;m) for(n0;n250;n) ;
}
/*************************************************
函数功能主函数
*************************************************/
void main(void)
{ unsigned char i; unsigned char Tab[ ]{0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF, 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE, 0xFE,0xFC,0xFB,0xF0,0xE0,0xC0,0x80,0x00, 0xE7,0xDB,0xBD,0x7E,0x3C,0x18,0x00,0x81, 0xC3,0xE7,0x7E,0xBD,0xDB,0xE7,0xBD,0xDB}; //流水灯控制码unsigned char *p; //定义无符号字符型指针pTab; //将数组首地址存入指针 p while(1) { for(i0;i32;i) //共 32 个流水灯控制码{ P0*(pi); //*pi)的值等于 a[i] delay150ms(); //调用 150ms 延时函数} }
} 51单片机应用从零开始九·数组-CSDN博客