VS的int类型的值无法分配到实体

在Visual Studio环境下,使用C++编程时遇到一个问题,当尝试将int类型的二维数组赋值给指针数组时出现编译错误,而在C语言环境下则显示警告。分析表明,int *p[4]可以容纳25个int数据,但*p[4]存储25个数据时存在问题。通过&p[4][2]表示的地址与预期相差四个字节。这个问题涉及到指针和数组的内存对齐及类型转换的细节。
摘要由CSDN通过智能技术生成

 

#include<stdio.h>
int main()
{
	int arr[5][5];
	int(*p)[4];
	p = arr;
	/// <summary>
	/// E0513	
	/// 不能将 "int (*)[5]" 类型的值分配到 "int (*)[4]" 类型的实体	
	/// 109	D:\CODE\2021\109\源.cpp	6
	/// 警告	C4477
	/// “printf” : 格式字符串“ % p”需要类型“void* ”的参数,
	/// 但可变参数 1 拥有了类型“int”
	/// 	109	D : \CODE\2021\109\源.cpp	11
	/// </summary>
	/// <returns></returns>
	printf("%p,%d\n", &p[4][2] - &arr[4][2], &p[4][2] - &arr[4][2]);
	return 0;

}

 用.cpp编译报错,无法运行。

但是换成.c文件时只有警告没有编译

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值