以下两种使用下标打印文本的方法之间是否有显着差异? 使用一种方法优于另一种方法是否有优点/缺点?

#include <stdio.h>

int main(void)
{
    int i;
    char *text;

    /* method 1 */
    text = "abc";
    for (i = 0; i < 3; ++i) {
        printf("%c\n", text[i]);
    }

    printf("\n");

    /* method 2 */
    for (i = 0; i < 3; ++i) {
        printf("%c\n", "abc"[i]);
    }

    return 0;
}

#1楼 票数:1 已采纳

两种方法基本相同。 第二种方法可能会稍快一些,因为您的打印函数将调用静态值(“ abc”)而不是对“ abc”的引用。

如果编译器最终使这两种方法相似,我不会感到惊讶。

话虽这么说,第一种方法在大多数情况下应该更好,因为您可能想重用'text'变量或从其他位置加载它。

  ask by rsarson translate from so

未解决问题?本站智能推荐:

3回复

打印二维数组内容的不同方法

您可以检查以下代码: 它将正确地打印数字从12到1。但是这段代码: 它打印12、11、10、1、2、1。可能是什么问题? 我知道您可以使用2个循环和变量来打印它,但是我正在尝试学习如何用这种方法。
4回复

使用&或*?在C中分配指针的不同方法

在C中,如果我想要一个指向变量的指针引用 int c = 12 ; int *p ; p = &c ; 或者我可以这样 int c = 12; int p; p=&c; 在两种情况下,p的值都是c的地址,请您告诉我我将面临的问题。
2回复

使用不同方法的Linux功能的性能分析

我知道这个问题更多是与编译器和OS相关的内容,但是如果有人可以对它有所了解,它可以帮助我进行一些优化。 我的目标是在文件夹y中创建文件X (可能有数百万个数字,x和y也是每次调用的变体和更改。)我正在Linux上工作。 为此,我有两种方法: 首先对所需目录“ y”执行chdir,
2回复

忽略信号的不同方法?

我是 Linux 和信号处理的新手。 signal函数原型是 以下是我的问题: Q1-如果我想忽略SIGINT信号,那么我只需要简单地编码为: signal(SIGINT, SIG_IGN); ,我的理解正确吗? Q2-如果我编码为: 由于我自己的sigint_handler什么都不做,这很
1回复

理解malloc的不同方法

请有人向我解释n*n矩阵的以下两个声明之间的区别。 和 谢谢你。
3回复

实现换行的不同方法

我正在尝试使用行长来包装一长行,并一次打印一行(行长),而不是将整个行打印为一块。 我以为在每行长度处添加'\\ n'字符就可以完成这项工作,并编写了以下代码。 但是这段代码似乎没有用。 我还有什么其他方法可以实现换行?
4回复

调用函数的不同方法有哪些?

调用函数的不同方法有哪些? 例如,我可以在没有()的情况下调用函数吗?
5回复

如何使用格式打印文本

我的问题是当我尝试使用“\\ n”打印文本时,这个特殊字符对于printf是不可见的,并在将其回显到文件后再放入并再次读取。 输出应如下所示: 它看起来像Test\\nTest 。 我究竟做错了什么? 学习目的,所以请你好。