49.【C语言】解释“数组和指针”容易混淆的地方

embedded/2024/10/22 13:39:02/
#include <stdio.h>
int main()
{int arr1[5] = { 1,2,3,4,5 };int* p1 = &arr1;int arr2[5]={ 0 };int *p2[5] = &arr2;int arr3[5]={ 0 };int (*p3)[5] = &arr3;int arr4[5]={ 0 };int* (*p4)[5] = &arr4;return 0;
}

上方代码运行是否有错误?写的内容是否规范呢?

逐条分析:

int arr1[5] = { 1,2,3,4,5 };定义了一个名为arr1的数组,其类型为int[5]

int* p1 = &arr1;&arr1的类型在int[5]的基础上加个*,即int(*)[5]

这里int[5]int(*)[5]类型不匹配

因此编译器会报警告:

必须强制让*与p1结合,建议改成:

int (*p1)[5] = &arr1;//p1是int(*)[5],(*)代表p1是指针,int[5]代表含五个整型元素的数组

int arr2[5] = { 1,2,3,4,5 };定义了一个名为arr2的数组,其类型为int[5]

int *p2[5] = &arr2;出现了严重的问题!!

报错:

编译器认为p2是数组其包含5个元素(p2[5]),数组的类型为int*

&arr2的类型为int(*)[5]

这里int*int(*)[5]类型不匹配

必须强制让*与p2结合,建议改成:

int (*p2)[5] = &arr2;//p2是int(*)[5],指向含五个整型元素的数组

int arr3[5]={ 0 };int (*p3)[5] = &arr3;写法无误,解释同上

int arr4[5] = { 0 };定义了一个名为arr4的数组,其类型为int[5]

int* (*p4)[5] = &arr4;但p4类型有问题

arr4类型为int[5]

&arr4类型为int(*)[5]

但p4类型为int* (*)[5],从int(*)[5]推过来意思是p4是指向含5个int*类型指针元素的数组指针

所以int(*)[5]int* (*)[5]类型不匹配

因此编译器会报警告:

建议改成:

int* arr4[5] = { 0 };
int* (*p4)[5] = &arr4;

http://www.ppmy.cn/embedded/105073.html

相关文章

pyecharts可视化数据大屏

1. 简介 1.1. 概述 PyECharts 是一个用于生成 ECharts 图表的 Python 库。ECharts 是一款由阿里巴巴开发的开源 JavaScript 图表库,广泛应用于网页端的数据可视化。而 PyECharts 将 ECharts 的功能带到了 Python 环境中,使得 Python 开发者可以方便地在数据分析、机器学习等…

使用python导出Excel表格中的lua配置

背景&#xff1a;游戏开发中&#xff0c; 策划使用Excel配置游戏中的参数数据&#xff0c;写一个工具用于导出这些配置 工具选择使用 python来开发&#xff0c;这样Windows、macOS、Linux平台都可以使用&#xff0c;而且有丰富的第三方模块。 本机先安装python&#xff0c;我…

Windows Docker 部署 Java Jar 包

一、简介 Docker 是一种流行的容器化平台&#xff0c;可以用于部署各种类型的应用程序&#xff0c;包括 Java 项目中的 JAR 文件。今天讲的是 Windows Docker 部署 JAR 项目的基本教程。 二、示例项目 这里以基于 Java 语言的 XXL-JOB 项目为例&#xff0c;使用里面 xxl-job…

《“草莓”引领风潮:全能AI与专业型AI的未来市场较量》

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

笔记:如何使用Process Explorer分析句柄泄露溢出问题

一、目的&#xff1a;如何使用Process Explorer分析句柄泄露溢出问题 使用 Process Explorer 分析句柄泄漏问题是一个非常有效的方法。句柄泄漏通常是由于应用程序在创建系统资源&#xff08;如文件、注册表项、GDI 对象等&#xff09;后没有正确释放这些资源。以下是使用 二、…

Ei、Scopus双检索 | 2025年第四届人工智能与机器学习前沿国际会议

会议简介 Brief Introduction 2025年第四届人工智能与机器学习前沿国际会议(FAIML 2025) 会议时间&#xff1a;2025年4月25日-27日 召开地点&#xff1a;中国沈阳 大会官网&#xff1a;www.faiml.org FAIML 2025 将围绕“人工智能与机器学习”的最新研究成果展开&#xff0c;为…

19.神经网络 - 线性层及其他层介绍

神经网络 - 线性层及其他层介绍 1.批标准化层–归一化层&#xff08;不难&#xff0c;自学看官方文档&#xff09; Normalization Layers torch.nn — PyTorch 1.10 documentation BatchNorm2d — PyTorch 1.10 documentation 对输入采用Batch Normalization&#xff0c;可…

C# SM2 SM3 SM4 使用

目录 效果 SM2 SM3 SM4 项目 代码 SM2Utils.cs Sm3Utils.cs Sm4Utils.cs 下载 效果 SM2 公钥&#xff1a;04ca3e272e11b5633681cb0fbbfd8c162be08918ce5b644cd33d49c17be8674caf6c20a11de8b65333924dfe7d42246abb4a4c36b663bef1aafc624a35acf4d2b1 私钥&#xff1a;…