任何避免C语言中丑陋指针的方法

时间:2019-03-24 16:17:13

标签: c pointers

我一般来说对C语言还很陌生,但是具有基本的代码知识。我很难将指针指向我的头,想知道是否有人对它们有任何好的思考方式(例如正确地使用“ *”和“&”)。我正在尝试为控制台输入创建头文件,并且这样做是返回指向答案数组的指针。我想使头文件对最终用户来说易于使用。

这是我所拥有的并且可以工作,但是有一种方法可以消除printf(“%s \ n”,list [* i])中的指针(*);通过修改for循环属性?

class Matrix2d
{
  public:
     char keys [ROWS][COLS] = {
       {'1','2','3','A'},
       {'4','5','6','B'},
       {'7','8','9','C'},
       {'*','0','#','D'}
     };
};

最终解决方案:

    int *pointer;
    char *list[] = {"Hello1", "Hello2", "Hello3", "Hello4", "Hello5", NULL};

    pointer = multiChoice(list);

    printf("Choices:\n");
    for (int *i = pointer; *i >= 0; i++)
    {
        printf("%s\n", list[*i]);
    }

1 个答案:

答案 0 :(得分:-5)

您可能知道,指针存储例如变量和函数的地址。在这种情况下,“ *”运算符用于两种不同的操作。就像使用 pointer 一样声明指针。另一个操作是解引用,该操作返回存储在指针指向的地址处的值。

我不知道 multiChoice()的作用,所以我无法消除 pointer 指针变量。但实际上,由于简单,我会在初始化中重写 i 。一次取消引用 pointer 而不是三次取消引用 i 较短,可读性更高。

for (int i = *pointer; i >= 0; i++)
{
    printf("%s\n", list[i]);
}