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;
}
相关推荐
m0_748252382 分钟前
Ruby 模块(Module)的基本概念
开发语言·python·ruby
羊小猪~~5 分钟前
【QT】-- QT基础类
开发语言·c++·后端·stm32·单片机·qt
木卫二号Coding16 分钟前
Python-文件拷贝+文件重命名+shutil+记录
开发语言·python
leaves falling16 分钟前
冒泡排序(基础版+通用版)
数据结构·算法·排序算法
bubiyoushang88834 分钟前
基于Q-learning的路径规划MATLAB仿真程序实现
开发语言·matlab
l1t37 分钟前
在arm64 Linux系统上编译tdoku-lib的问题和解决
linux·运维·服务器·c语言·cmake
C雨后彩虹39 分钟前
无向图染色
java·数据结构·算法·华为·面试
secondyoung40 分钟前
Git使用:rebase用法
c语言·经验分享·git·vscode
FAFU_kyp1 小时前
Rust 结构体(struct)
开发语言·后端·rust
坚持就完事了1 小时前
扫描线算法
算法