C语言如何利用数组存储“变量”

数组简介

众所周知,数组仅能存储常量数据,包括数字常量、字符常量、字符串常量。但在实际应用中,可能会遇到需要按需修改数组中数据值的需求,此时又应该如何解决呢?通过一段时间的测试验证,解决了项目中的该需求,于是便产生了本篇文章,也是本人的第一篇技术博客。如果有不足或错误之处,还望读者可以不吝赐教,在下不甚感激!

数字常量

C语言利用数组保存数字常量是一种非常常见的方式,比如:int array[ ] = {0,1,2,3,4,5};而在实际应用中,也经常会使用该方法,比如:将数组中的数据保存至非易失性存储设备(比如EEPROM)中,便于程序的后续使用。

字符常量

C语言利用数组保存字符常量的方式在嵌入式领域的应用并不是很多,其形式如下:char char_array[5] = {'C','h','i','n','a'};上例则表明数组名为char_array的数组依次保存了’C’、‘h’、‘i’、‘n’、'a’这5个字符常量。

字符串常量

由于C语言不支持字符串操作,所以不支持诸如C++的string关键字用于定义字符串变量。但是在C语言中,可以利用字符串数组或者指针定义一个字符串变量。如下所示:
字符串数组形式:char string_array[] = "I love China!";
指针形式:char * pString = "I love China!";需要注意的是,由于’\0’作为字符串的结束标志,所以无论是使用字符串数组形式或者指针形式定义一个字符串,系统均会在字符串的末尾自动加上一个’\0’。所以上述子字符串的实际长度总是比""号中的字符数量多1。

背景

在现实工作过程中,外部需要读取数组中的某个数据,但同时,通过操作后台,该数据需要按需进行改变。如果使用上面说的三种数组形式,无法满足该要求。

解决方法

通过查询资料以及测试验证,如果使用指针数组便可以解决该问题。指针数组,顾名思义便是存储指针(即地址)的数组。而在实际应用中,通过指针的解引用操作,便可以实现利用数组存储“变量”的要求。具体方法如下所示:

//定义三个变量
int array1 = 100;
int array2 = 200;
int array3 = 300;
//定义一个指针数组村存储上述变量的地址
int * p_array[3] = {&array1,&array2,&array3};
printf("array1 = %d\n",*p_array[0]);//100
printf("array2 = %d\n",*p_array[1]);//200
printf("array3 = %d\n",*p_array[2]);//300
array1 = 60;
array2 = 90;
array3 = 120;
printf("array1 = %d\n",*p_array[0]);//60
printf("array2 = %d\n",*p_array[1]);//90
printf("array3 = %d\n",*p_array[2]);//120

在实际应用中,通过对数组中对应元素进行解引操作,便可以获得该变量的值,从而实现了数组存储“变量”的要求。

说明

本文所描述的利用数组存储“变量”只是为了解决工作中遇到的问题。实际上,数组仅能存储常量,并不能存储实际意义上的变量,读者一定不要混淆。比如:

int num6 = 50int array[3] = {10,num6,20};

如果按照上面的代码初始化数组,编译器一定会报错,会提示数组仅能存储常量数据。

  • 20
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值