当前位置: 首页 > news >正文

C语言-指针变量,常量与数组名的细微区别辨析

本节根据两个选择题进行展开辨析

一、例1

本题答案:C

解析:强干扰选项是B,我相信大多数同学都会在B,C之间犹豫好久,那么为什么答案会最终选择C呢?因为本题在定义函数所以a首先是一个数组名,其次是一个指针常量,那为什么不是指针变量呢,这要分情况,我们不能简单的认为double a[];这种形式的写法a都是指针变量,如果是在定义函数时,那么函数形参处的double a[]写法,a是指针常量,举个例子:

例子代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{//首先要明确数组名本质是一个地址,这个地址可能是指针常量,也有可能是指针变量float a[10] = { 0 };//a此时为指针常量void fun1(float arr1[]);//形参arr1此时为指针变量void fun2(float* arr2);//形参arr2此时为指针变量fun1(a); //a 作为指针常量被传递,相当于传入的是数组的首地址fun2(a); //a 作为指针常量被传递,相当于传入的是数组的首地址return 0;
}
void fun1(float arr1[])//arr1此时为指针常量
{}
void fun2(float* arr2)//arr2此时为指针常量
{}

二、例2(如果例1)能够理解,可以尝试一下该题

本题答案:A

补充说明:函数声明意味着float array[]在赋值的位置,相当于在赋值运算符的右侧

三、总结

如何区分float array[]这种类型写法array是指针变量还是指针常量呢?☆☆☆☆☆

看float array[]出现的位置,如果float array[]出现的位置是被赋值的位置,即相当于赋值运算符左侧,那么array一定是指针常量,相反,如果float array[]出现的位置是赋值的位置,即相当于在赋值运算符的右侧,那么array一定是指针变量!可以用上述两例题进行验证。


http://www.mrgr.cn/news/44950.html

相关文章:

  • Windows系统编程(五)静态库和动态库
  • 慢接口分析与优化总结
  • MyBatis 批量插入方案
  • Java之Native详解
  • 动态规划算法——三步问题
  • 图论day55|深度优先搜索理论基础、98. 所有可达路径(卡码网)
  • 数据库中,如何查询表中的所有记录?
  • 基于LORA的一主多从监测系统_前言
  • VLAN 和 ARP 表
  • Observer(观察者模式)
  • Spring Cache 的说明及常用注解
  • 并查集的模拟实现
  • BMC pam认证的使用
  • LeetCode1049:最后一块石头的重量
  • IDEA搭建JDK1.8源码调试环境
  • Android架构--MVVM
  • Linux操作系统——概念扫盲I
  • Django学习笔记十四:系统框架总结
  • 分治算法(4)_快速选择_库存管理III_面试题
  • [运维]5.镜像本地存在但仍然从网络拉取的问题