关于C语言的二维数组和指针注意的地方
来源:互联网 发布:网络微电影排行榜 编辑:程序博客网 时间:2024/05/02 03:10
今天,看了一下彩屏的驱动程序,在显示字符的时候看到一段这样的代码,在江西理工大学朱兆琪的帮助下,才意识到自己以前对数组指针的一个极大的误区,下面总结一下吧!
1、首先是声明变量
unsigned char *pFont; unsigned char *FontTable[] = {(unsigned char *)FONT6x8,(unsigned char *)FONT8x8,(unsigned char *)FONT8x16};2、然后就是这样一段代码
pFont = (unsigned char *)FontTable[size];//pFont = FONT8x8,意思就是pFont = FONT8x8 // get the nColumns, nRows and nBytes nCols = *pFont;//获取首元素的列大小 nRows = *(pFont + 1);//获取首元素的行大小 nBytes = *(pFont + 2);//获取首元素的大小
3、还有就是这个数组也贴出来
const unsigned char FONT8x16[][16] = {0x08,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
注意:SIZE取2
接下来就是分析我的代码了
1、这里nCols = 0x08 nRows = 0x10 nBytes = 0x10 没错打印的就是数组FONT8X16的前三个元素
2、之前理解错误的就是觉得应该打印的是3个元素的地址。
3、首先FONT8X16是一个二维数组,它指向的是一个数组的首元素的地址,只不过这个首元素是一个数组
4、然后(unsigned char *)FONT8x16表示把首元素的地址转化为一个字符型指针
5、接着 pFont = (unsigned char *)FontTable[size] 就是取这个字符型指针里面的值,也就是得到了指针指向的二维数组的首元素(也就是一个数组),这还是一个地址!
6、最后 *pFont就是取得 二维数组首个元素(第一个一维数组)的首元素,也就是0x08,*(pFont+1)第二个元素0x10
7、那么假如我们 *FONT8X16又表示的是什么呢?这是表示取得二维数组首元素的地址,*(FONT8X16+1)表示第二个元素的地址
更形象的一个例子如下!
#include<stdio.h>int main(){int m,n =0;int a[][8] = {1,1,2,4,5,6,7,8,9};int *p = (int *)a;n = *(a+8);m = *(p+8);printf("%d\n%d\n",n,m);}
有机会还来回味回味
- 关于C语言的二维数组和指针注意的地方
- 关于C语言的二维数组和指针
- 一道关于二维数组和指针数组的C语言笔试题目
- c语言中关于二维数组的指针访问
- C语言的二维数组和二级指针的理解
- 关于指针的指针和二维数组
- C语言教学--二维数组和指针的理解
- C语言二维数组和指针的关系
- C语言,二维数组时候的指针
- c语言中指针的用法以及注意的地方
- C语言二维数组与数组指针和指针数组的应用
- c语言——关于二维数组和指针
- C语言中二维数组、二维指针、指向指针的数组、指向数组的指针
- C语言指针、二维数组和指针
- 关于二维数组地址与指针的一些注意点
- 字符数组、字符指针和sizeof值得注意的地方。。
- C中关于一位数组与指针和二维数组与指针的一点总结
- C语言中指针与数组注意地方
- html button控件 非活性
- 表情预览中,清空预览区域的背景
- iptables 数据包流程图
- Android深入浅出之Zygote
- A10 ubuntu-10.04.4-desktop-amd64.iso的U盘安装方法
- 关于C语言的二维数组和指针注意的地方
- 【视频】用Arduino自制家庭控制开关
- 大师罗莊自己整理的绘画色彩笔记
- 开通CSDN博客。记录对magento 105se模版的修改。以防以后忘记
- SimpleDateFormat的线程安全问题
- 获取系统各种详细信息
- const 函数参数 issue
- 【黑马程序员】SqlBulkCopy大批量数据的处理
- JS动态添加option和删除option