它的值是变量的地址.
int *p, q; // 表示p是一个int型指针变量, q是普通int型.
数组变量是特殊的指针
函数参数表中的数组实际上就是指针
所以以下四种函数原型是等价的
int sum(int *arr, int n);
int sum(int *, int);
int sum(int arr[], int n);
int sum(int [], int n);
1 2 3 4
int a[] = {5, 15, 34, 54, 14, 2, 52, 72}; int *p = &a[1];
则p[2]的值是34, p[-1]的值是5
练习
/*
GPS数据处理
题目内容:
NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。
intchar2Int(char c) { int ret; if (c >= '0' && c <= '9') { ret = c - '0' + 0; } elseif (c >= 'A' && c <= 'F') { ret = c - 'A' + 10; } elseif (c >= 'a' && c <= 'f') { ret = c - 'a' + 10; } return ret; }
// 两位字符转成数字并+8北京时间 inttrans2Integer(char c1, char c2) { int i = 10 * char2Int(c1) + char2Int(c2); return i; }
// 两位字符转成数字并+8北京时间 inttrans2IntegerPlus8(char c1, char c2) { int i = trans2Integer(c1, c2); if (i <= 15) { i += 8; } else { i -= 16; } return i; }
// 两位字符转成十六进制 inttrans2IntegerHex(char c1, char c2) { int i = 16 * char2Int(c1) + char2Int(c2); return i; }