谁能告诉我下面C代码的输出是什么?

时间:2013-12-12 17:26:50

标签: c

据我所知,它必须打印所有字符及其各自的地址,但事实并非如此。

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
    char *name;
    int length;
    char *cptr;
    cptr = name;
    name = "DELHI";
    printf("%s\n",name);
    while(*cptr!='\0')
    {
        printf("%c-%d\n",*cptr,cptr);
        cptr=cptr+1;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

这不符合你的想法

cptr = name;
name = "DELHI";

将其更改为此

name = "DELHI";
cptr = name;

现在你很高兴。

在第一种情况下,您将cptr设置为指向name所在的位置,然后将名称指向常量。 cptr指向一些随机位置名称指向常量。

在第二种情况下,他们都指向常数。