C51 怎么取数组的元素进行显示 u8 *s

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C51 怎么取数组的元素进行显示 u8 *s相关的知识,希望对你有一定的参考价值。

数组time[6]是存的时间时分秒,格式是unsigned char tttime[6];
LED显示是这样调用的void Display_8X16(u16 x0,u16 y0,u8 *s)
直接全部显示没问题,Display_8X16(u16 x0,u16 y0,tttime)能全部正常显示
我想单独显示tttime[5],应该怎么办呢?
这样调用提示错误Display_8X16(u16 x0,u16 y0,tttime[5])
argument of type "unsigned char" is incompatible with parameter of type "u8 *"

void Display_8X16(u16 x0,u16 y0,u8 *s)中s是指针,
Display_8X16(x0, y0,tttime[5])中tttime[5]是值,所以出错。
当然如果写成:
Display_8X16(x0,y0,&tttime[5]) 这样就转换为地址指针了
但并不保证程序运行正确,因为函数Display()是如果实现的我不知道。
参考技术A 应该是显示不支持只显示一个数据把

Java中怎么取出数组中某个单位的某个值进行排序?

Student[] s=new Student[5];
s[0]=new Student("西西",59,78,80);
s[1]=new Student("小亿",67,78,70);
s[2]=new Student("咚咚",23,84,77);
s[3]=new Student("李济",69,78,73);
s[4]=new Student("冰芳",76,74,71);

比如我要按每个中的最后一个的值进行从高到低顺序依次打印出来s[]数组?要怎么搞?

sort(T[] a, Comparator<? super T> c)

用这个函数,自定义comparator函数实现最后一个值排序

import java.util.Arrays;
import java.util.Comparator;
public class TestDengCha 
 public static void main(String[] agrs) 
  Student[] s = new Student[5];
  s[0] = new Student("西西", 59, 78, 80);
  s[1] = new Student("小亿", 67, 78, 70);
  s[2] = new Student("咚咚", 23, 84, 77);
  s[3] = new Student("李济", 69, 78, 73);
  s[4] = new Student("冰芳", 76, 74, 71);
  Arrays.sort(s, new Comparator<Student>() 
   @Override
   public int compare(Student s1, Student s2) 
    if (s1 != null && s2 != null) 
     return s1.getEnglish() > s2.getEnglish() ? 1 : (s1.getEnglish() == s2.getEnglish() ? 0 : -1);
    
    return 0;
   
  );
  System.out.println(Arrays.toString(s));
 

class Student 
 private String name;
 private int chinese;
 private int math;
 private int english;
 Student(String name, int chinese, int math, int english) 
  this.name = name;
  this.chinese = chinese;
  this.english = english;
 
 public String getName() 
  return name;
 
 public void setName(String name) 
  this.name = name;
 
 public int getChinese() 
  return chinese;
 
 public void setChinese(int chinese) 
  this.chinese = chinese;
 
 public int getMath() 
  return math;
 
 public void setMath(int math) 
  this.math = math;
 
 public int getEnglish() 
  return english;
 
 public void setEnglish(int english) 
  this.english = english;
 
 @Override
 public String toString() 
  return "姓名:" + name + " 语文" + chinese + " 数学" + math + " 英语" + english;
 

参考技术A Collections 类的方法 sort
public static <T> void sort(List<T> list,
Comparator<? super T> c)

根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意
e1 和 e2 元素,c.compare(e1, e2) 不得抛出
ClassCastException)。
此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。
排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。
指定列表必须是可修改的,但不必是可大小调整的。此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的
n2 log(n) 性能。

参数:
list - 要排序的列表。
c - 确定列表顺序的比较器。null 值指示应该使用元素的自然顺序。
抛出:
ClassCastException -
如果列表中包含不可使用指定比较器相互比较 的元素。
UnsupportedOperationException
- 如果指定列表的列表迭代器不支持 set 操作。
参考技术B 将你的每一个数组的最后一个数放在num[]整形数组中,然后调用方法
Arrays.sort(num)(升序);

System.out.println("从大到小输出:");
for (int m = num.length-1; m >=0; m--)
System.out.println(num[m]);//从大到小输出

追问

可是你这输出来的 就只有那个数的排序吧?还有别的内容要一起显示出来呢?

参考技术C 数组中的元素现在是一个对象,只要获取对象的属性值,然后对数组进行排序即可。 参考技术D 最后一个数值是Student的什么属性呢?
可以对s[i].属性这个值进行排序,可用冒泡排序

以上是关于C51 怎么取数组的元素进行显示 u8 *s的主要内容,如果未能解决你的问题,请参考以下文章

arduino oled u8glib怎么显示变量

js怎么取一个数组中的奇数位元素或者偶数位元素

RK3399应用开发 | 基于u8g2驱动oled显示系统基本信息(时间IPCPU负载CPU温度)

RK3399应用开发 | 基于u8g2驱动oled显示系统基本信息(时间IPCPU负载CPU温度)

Arduino ESP8266 +0.96“Oled屏幕基于U8g2库实现充电和wifi图标动态显示

用友U8不能登录,显示不能登录到服务器,failed不能得到服务器。该怎么办?