如何将变量值传递给C中的数组

时间:2016-02-10 04:34:01

标签: c arrays variables variable-assignment

我是一名新手程序员,试图理解C中的数组。具体来说,我想取一个变量的数值并将其输入数组。我试图将值分配给数组,但失败并显示错误消息。有人可以简单地解释如何将值推送到数组中,然后只能访问最后一位数字吗?

我的最后一次尝试:

#include <stdio.h>
unsigned int TMR0 = 158;


int main(void)
{
unsigned int V = TMR0; 
unsigned int Random[2] = {V};
printf("%d \n" , *(Random+2));
return 0;

感谢。

2 个答案:

答案 0 :(得分:2)

unsigned int Random[2];

数组将以两个位置声明。

Random[0] Random[1] // two accessible positions in that array.

将值赋给数组时,

unsigned int Random[2] = { V} ;

值将存储在数组的第一个位置。 Random[0]

*(Random+2)将访问职位Random[2]。这个数组不是可访问的位置。这将导致不确定的行为。

另一件事是,如果您需要将值分配给您必须这样做的位置。

unsigned int Random[2] = {V,V} ;

要访问数组中的最后一个元素,

*(Random+1) or Random[1]

愿这link有所帮助。

答案 1 :(得分:1)

您实际上并不需要数组来访问您的号码数字 - 您只需要数学。

认识到&#34;数字&#34;重要的是暗示一个特定的数字基础。在计算机中,数字以二进制表示。为方便起见,它们可以使用公共基数在我们的代码中表示:十进制,十六进制和八进制是我们通常在C语言中使用的。

因此,要获得基数10 中的最后一个数字,您将获取值模10

int val = 158;
int last_digit = val % 10;
printf( "%d\n", last_digit );

如果你需要找到除最后一个之外的数字,你可以先执行整数除法然后模数:

int second_to_last_digit = (val / 10U) % 10;

或者,您可以将数字转换为字符串,然后查看该字符串中的每个字符。但是我不打算在这里讨论,因为向新程序员提供太多信息可能会让人感到困惑。