zoukankan      html  css  js  c++  java
  • cpp-week_one-错题整理

    cpp-week_one-错题整理

    2-14.以下哪个定义中的p不是指针,请选择恰当的选项:

    A.char **p;

    B.char (*p)[10];

    C.char *p[6];

    D.给出的三项中,p都是指针

    **p

    • 先将*p看成是一个整体(内容是指向p的指针),设为t,则*t是指向t的指针,所以**p的意思是指向(指向p的指针)的指针

    char (*p)[10]

    • ()的优先级最高,意味着p和*先形成了指针,而[10](以10个元素)是指针p所指向的内容,char表明了[10]元素的数据类型。
    • 数组指针:指向数组的指针

    char *p[6]

    • []的优先级高于*,故p会与[10]先结合形成数组,而char * 规定了数组p的每个元素的数据类型为字符型的指针
    • 指针数组:存放指针的数组,数组里每一元素才是指针,这种数组是指针的集合

    2-16.若有说明: char *language[]={“FORTRAN”,“BASIC”,“PASCAL”,“JAVA”,“C”}; 则以下不正确的叙述是 ( )。

    A.language+2表示字符串"PASCAL"的首地址

    B.*language[2]的值是字符P

    C.language是一个字符型指针数组,它包含5个元素,每个元素是一个指向字符串变量的指针

    D.language是一个字符型指针数组,它包含5个元素,其初值分别j : "FORTRAN","BASIC","PASCAL","JAVA","C"

    B.*language[2]的值是字符P

    • language先和[2]结合找到PASCAL,在对PASCAL进行*操作,得到PASCAL的首字母。

    • #include<bits/stdc++.h>
      using namespace std;
      int main()
      {
      	 char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"}; 
      	 cout<<language<<"  "<<*language<<endl;
      	 cout<<language+1<<"  "<<*(language+1)<<endl;
      	 cout<<language+2<<"  "<<*(language+2)<<endl;
      	 cout<<language+3<<"  "<<*(language+3)<<endl;
      	 cout<<language+4<<"  "<<*(language+4)<<endl;
      	 
      	 cout<<language[2]<<endl;
      	 cout<<*language[2]<<endl;
      	 cout<<*(language[2]+1)<<endl;
          return 0;
      }
      

    D.选DOG?

    2-54.设有下面的程序段:char s[]="china";char *p=s;则下列叙述正确的是____。

    A.数组s中的内容和指针变量p中的内容相等

    B.s和p完全相同

    C.s数组长度和p所指向的字符串长度相等

    D.*p与s[0]相等

    传送门

    答:答案:D
    A:s是字符数组,p是指向字符串的指针
    B:显然数组s中的内容和指针变量p中的内容不相等,应该换一种说法“数组s中的内容和指针变量p所指向的字符串的内容相等”

    • 指针变量p中的内容,存放的是地址?

    C:s数组的长度为6(包含结束符’’),p所指向的字符串长度为5
    D:*p=‘c’,s[0]=‘c’
    追问
    p所指向的字符串长度为啥是5呢?它不识别’’吗?
    追答
    '’不计入字符串总长度

  • 相关阅读:
    LeetCode 83. Remove Duplicates from Sorted List (从有序链表中去除重复项)
    LeetCode 21. Merge Two Sorted Lists (合并两个有序链表)
    LeetCode 720. Longest Word in Dictionary (字典里最长的单词)
    LeetCode 690. Employee Importance (职员的重要值)
    LeetCode 645. Set Mismatch (集合不匹配)
    LeetCode 500. Keyboard Row (键盘行)
    LeetCode 463. Island Perimeter (岛的周长)
    115.Distinct Subsequences
    55.Jump Game
    124.Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/14775487.html
Copyright © 2011-2022 走看看