没有类型的指针

image.png

特点:无法获取数据,无法计算,但是可以接收任意地址。

不同类型的指针之间,是不能相互赋值的
void类型指针打破上面的观点
优点:void没有任何类型,好处是可以接收任意类型指针记录的内存地址
缺点:void类型的指针,无法获取变量里面的数据,也不能进行加、减的运算

#include "stdio.h"
void swap(void* a, void* b, int len);
int main()
{
    int a = 10;
    int b = 11;

    int* p1 = &a;
    int* p2 = &b;   

    //printf("%d\n", *p1);
    //printf("%d\n", *p2);

    //void* p3 = p1;
    //void* p4 = p2;
    swap(&a,&b, 4);

    printf("a=%d\n",a);
    printf("b=%d\n",b);
    return 0;
}
void swap(void* a, void* b, int len)
{
    char* pc1 = a;
    char* pc2 = b;
    char temp = 0;
    //以字节为单位,一个字节一个字节的进行交换
    for (int i = 0;i < len; i++)
    {
         temp = *pc1;
        *pc1 = *pc2;
        *pc2 = temp;
        pc1++;
        pc2++;
    }

}

输出结果:

a = 11
b = 10

YingLi
6 声望4 粉丝

From zero to hero.