我是一名新手程序员,试图理解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;
感谢。
答案 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;
或者,您可以将数字转换为字符串,然后查看该字符串中的每个字符。但是我不打算在这里讨论,因为向新程序员提供太多信息可能会让人感到困惑。