指数指针的相关知识
标准库中预定义的类型,专门用于保存变量的大校stSize为变量的长度,pData1、pData2分别为是要比较的第1、2个参数。当返回值< 0时,表示pData1 < pData2;当返回值= 0时,表示pData1 = pData2;当返回值> 0时,表示pData1 > pDta2。
在这里,任何类型的指针都可以传入byte_swap()中,真实地体现了内存操作函数的意义,无论这块内存是什么数据类型,它操作的对象仅仅是一块内存。无论用户传进来的是什么类型,从C99版本后,将void *类型指针赋值给其它类型指针时,不再需要强制类型转换。即循环一次交换一个字节,那么对于int类型数据来说,仅需循环4次就可以了。其前提是两个变量的类型必须相同,比如,交换a、b两个变量的值,其使用方法如下:
byte_swap(&a, &b, sizeof(a));
byte_swap()数据交换函数的接口与实现详见程序清单 1.42和程序清单 1.43。
程序清单 1.42 swap数据交换函数接口(swap.h)
1 #pragma once
2 void byte_swap(void *pData1, void *pData2, size_t stSize);
程序清单 1.43 swap数据交换函数接口的实现(swap.c)
1 void byte_swap(void *pData1, void *pData2, size_t stSize)
2 {
3 unsigned char *pcData1 = pData1;
4 unsigned char *pcData2 = pData2;
5 unsigned char ucTemp;
6
7 while (stSize--){
8 ucTemp = *pcData1; *pcData1 = *pcData2; *pcData2 = ucTemp;
9 pcData1++; pcData2++;
10 }
11 }
针对特定的字符串,指针数组的应用示例详见程序清单 1.44。
程序清单 1.44 比较字符串大小然后输出范例程序
1 #include
2 #include
3 #include "swap.h"
4
5 const char * keyWord[5] = {"eagle", "cat", "and", "dog", "ball"};
6 void show_str (void) // 打印keyWord数据
7 {
8 for (int i = 0; i < sizeof(keyWord) / sizeof(keyWord[0]); i ++){
9 printf("%s", keyWord[i]);
10 }
11 printf("\n");
12 }
13
14 int main(int argc, char *argv[])
15 {
16 show_str();
17
18 if(strcmp(keyWord[0], keyWord[1]) < 0)
19 byte_swap(keyWord, keyWord +1, sizeof(keyWord[0]));
20 show_str();
21 return 0;
指针 相关文章:
- 超基础:指针万用表测量电容器方法分享(02-04)
- 数字万用表和指针式万用表的优劣点(02-16)
- 周立功手把手教你学嵌入式编程:函数指针与指针函数的应用(07-29)
- 所有C语言数组和指针的知识都在这里了!|周立功手把手教你学C语言编程(08-01)
- 周立功教你学C语言编程与程序设计:这样写函数指针数组最好用(07-31)
- 周立功教授谈迭代器模式设计(08-26)