c语言(8.9)

Void类型的指针,不表示任何类型,所以没有步长。它只能记录地址值

今天复习了Void类型的指针和多级指针

cs 复制代码
#include<stdio.h>
void swap(void* p1, void* p2, int len);
int main()
{

	int a = 10;
	int c = 20;

	swap(&a, &c, 4);

	printf("%d\n", c);
	printf("%d\n", a);

	return 0;
}
void swap(void* p1, void* p2, int len)
{
	//用char类型来接收,方便一个一个地转换
	char* pc1 = p1; 
	char* pc2 = p2; 

	char temp = 0;//别写成了char* temp = 0
	for (int i = 0; i < len; i++)
	{
		
		temp = *pc1;
		*pc1 = *pc2;
		*pc2 = temp;

		pc1++;
		pc2++;

	}


}
cs 复制代码
#include<stdio.h>

int main()
{
	int a = 10;
	int b = 20;

	int* p1 = &a;
	printf("*p1=%d\n", *p1);
	printf("*%p\n", p1);
	printf("*%p\n", &a);
	printf("*%p\n", &b);

	int** pp = &p1;

	*pp = &b;
	printf("*p1=%d\n", *p1);
	printf("*%p\n", p1);
	printf("*%p\n", &b);
	
	**pp = 13;
	printf("*p1=%d\n", *p1);
	
	return 0;
}
cs 复制代码
#include<stdio.h>

int main()
{
	int arr[] = { 1,2,3,4,5 };
	int* p1 = arr;//退化成指向第一个元素的指针。 步长为int类型的四个字节。 +1后指向2
	int* p2 = &arr;//不会退化,指向整个数组的指针,+1后,向后20个字节


	return 0;
}
相关推荐
TT哇1 分钟前
@AllArgsConstructor
java·开发语言
lkbhua莱克瓦241 分钟前
TCP通信练习1——多发多收
java·开发语言·网络·网络协议·tcp/ip·tcp练习
Filotimo_3 分钟前
在java后端开发中,docker虚拟化容器用处
java·开发语言·docker
hetao17338373 分钟前
2025-12-22 hetao1733837的笔记
c++·笔记·算法
宁大小白8 分钟前
pythonstudy Day42
开发语言·python
零小陈上(shouhou6668889)10 分钟前
西红柿叶病害检测(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)
开发语言·python·yolo
superman超哥11 分钟前
仓颉Result类型的错误处理模式深度解析
c语言·开发语言·c++·python·仓颉
Binky67818 分钟前
力扣--贪心篇(1)
数据结构·算法·leetcode
sinat_2554878118 分钟前
文件I/O流
java·jvm·算法
ht巷子19 分钟前
Qt:信号与槽
开发语言·c++·qt