以下程序执行后的输出结果为()

A.   2
B.   编译错误
C.   1
D.   无法确定

3 收藏


直接登录
最新评论
  • no game no life 程序员 2016/05/09

    d额。。完全不用管func()

    只看printf(“%c”, s); 这是打印一个字符。。直接将指针s的值(地址)当做一次char输出。。所以是不确定的

  • 梯恩梯   2016/05/09

    单引号和双引号是中文的,不知道是打错了还是故意这样的,如果标点符号没错,选D,相当于是把字符串的首地址当成字符来输出,这个值在不同的机器、不同的编译器、不同的时刻是不同的!

  • 选A。子程序进行地址加1。数组名是数组首地址。

  • march_on   2016/05/12

    本来想考察指针的加法,结果,呵呵。printf(%c, *s);

    • march_on   2016/05/12

      调用func(s)的时候:一个临时的指针char *p = s; p = p + 1; p此时指向”2″, 并不会改变s指向的地方。。。     出题人是要考这个吧

  • march_on   2016/05/12

    下面的代码就可以更改s的指向了:

    void func(char **p) {
    (*p) = (*p) + 1;
    }
    int main() {
    char s[] = {‘1’, ‘2’, ‘3’, ‘4’};
    char *ss = (char*)s;
    func(&ss);
    printf(“%c”, *ss);
    return 0;
    }

    类比一下:

    fun(int a) {a=a+1;} 调用: int a = 1; fun(a) 并不会改变a

    fun(int *a) {(*a) = (*a) + 1;} 调用: int a = 1; fun(&a) 会改变a为2

  • 明显的d啊。1.func函数里指针加一但是内存空间值不变而且局部变量函数结束就没了,2.打印数组首地址,以字符形式。首地址肯定是不断变化的啊,所以不确定啊。

  • 、小明 开发工程师,项目经理 2016/05/15

    func()形参不影响s首地址指针位置,但printf输出参数是%c讲首地址指针强制转化为char字符故不确定输出结果

  • code99 后台开发工程师 2016/05/15

    c

    • code99 后台开发工程师 2016/05/15

      看错,假如是printf(“%c”, *s);选c.

      printf(“%c”, s);将地址当char字符打印。在程序运行的时候,程序分配空间给s时,地址随机分配,随意不确定。

  • d无法确认

    printf函数中s对应的是地址值。c%对应字符