更多“下面程序段的运行结果是 char*p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"AB ”相关问题
  • 第1题:

    下面程序段的运行结果是 char *p="abcdefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"ABCD")));

    A.8

    B.12

    C.4

    D.7


    正确答案:C
    解析: 本题考查两个知识点:strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的'\0',strcpy函数的功能是把后面的字符串复制到前面字符串所指向的空间。

  • 第2题:

    以下程序段的输出结果是______。 char *p="abodefgh"; p+=3; printf("%d\n",strlen(strcpy(p,"12345")));

    A.8

    B.12

    C.5

    D.7


    正确答案:C
    解析:本题主要考查strcpy()函数,char*strcpy(char*s1,char*s2)是把指针s2指向的串复制到指针s1指向的存储空间。

  • 第3题:

    下面程序段的运行结果是( )。 char*p="abcdefgh"; p+ =3; printf("%d\n",stfien(strcpy(p,"ABCD")));

    A.8

    B.12

    C.4

    D.7


    正确答案:C
    解析:p+=3使指针p指向字符"d",函数strcpy的功能是把后面的字符串复制到p指针指向的空间;strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的"\0"。本题结果为4,即字符串“ABCD”的长度。

  • 第4题:

    有以下程序: point(char *p){P+=3;) main() { char b[4]={'a','b','c','d'},*p=b; point(p);printf("%c\n",*p); } 程序运行后的输出结果是( )。

    A.a

    B.b

    C.c

    D.d


    正确答案:A
    解析:本题的考点是C语言的函数参数的传递方式(传值)。函数poret的形参是一个char型指针p,当调用point(p)时,将指针p的值传递给形参,函数point中的p+=3,并不影响主程序main中的p值,因此函数调用结束后,p仍指向b的首地址,输出*p的值应是字符a。

  • 第5题:

    有以下程序 point(char *p) { p+=3; } main() { char b[4]={'a'.'b','c','d'}, *p=b; point(p); printf("%c\n",*p); } 程序运行后的输出结果是

    A.a

    B.b

    C.c

    D.d


    正确答案:A
    解析:本题是一个陷阱,看似考查函数的传址调用,其实考的是传值调用。在C语言中,不管你给函数传递的参数是什么,指针也好数组名也罢,系统都是严格的将实参的值复制了一份作为函数的形参,即传值调用。在函数中,对形参中的值怎么改变都不会影响到实参。那传址调用又是怎么实现的呢?那是因为在函数中改变的不是形参指针变量中的值,而是形参指针变量所指内存中的值。其实骨子里还是将实参指针的值复制?一份给形参指针变量,它们是两个独立的互不相干的变量,只不过指向的内存地址值一模一样罢了。本题的函数只是改变了形参指针变量p的值,这对程序没有任何影响,主函数中p一开始就是指向b[0],最后输出时还是b[0]的值'a'。所以应该选择A。