若有如下图所示5个连续的int类型的存储单元并赋值,a[0]的地址小于a[4]的地址。 p和s为int型的指针变量。请对以下问题填空。①若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是【 】。②若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是【 】。

题目

若有如下图所示5个连续的int类型的存储单元并赋值,a[0]的地址小于a[4]的地址。 p和s为int型的指针变量。请对以下问题填空。

①若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是【 】。

②若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是【 】。


相似考题
更多“ 若有如下图所示5个连续的int类型的存储单元并赋值,a[0]的地址小于a[4]的地址。 p和s为int型的指针变量。请对以下问题填空。①若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储单元a[”相关问题
  • 第1题:

    若要用下面的程序片段使指针变量p指向—个存储整型变量的动态存储单元 int *p; p=______malloc(sizeof(int)); 则应填入______。

    A.int

    B.int*

    C.(*int)

    D.(int*)


    正确答案:D
    解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之为在型一致,强制类型转换的格式为(数据类型*)。

  • 第2题:

    以下叙述中正确的是()

    A.int *p1; int **p2; int ***p3; 都是合法的定义指针变量的语句

    B.指针变量只能通过求地址运算符(&)来获得地址值

    C.语句p = NULL; 与p = 0; 是等价的语句

    D.语句p = NULL; 执行后,指针p指向地址为0的存储单元


    p=a

  • 第3题:

    若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()

    A.p=2*(int *)malloc (sizeof (int));

    B.p=(int *)malloc (2*sizeof (int));

    C.p=(int *)malloc (2* sizeof (0)));

    D.p= (int*)calloc(2,sizeof (int));


    A 解析:本题考核的知识点是manoc()函数的应用。该函数的调用格式是“malloc(n)”,作用是申请n个字符的存储单元并把该存储区的首地址作为返回值,实际调用的时候可在前面加上“(类型说明符*)”,以转换成需要的类型的地址。选项D多了一个参数,不符合malloc()函数的调用格式;整型变量在有的计算机系统里占4个字节,并不一定在所有的计算机系统里都是两个字节,所以选项C不正确;选项A中是申请一个整型的存储空间并把该存储空间的首地址乘以2,这样的做法是不正确的,其存储空间为没乘以2之前的存储空间的2倍的连续存储空间的地址,选项A不正确。所以,4个选项中B为所选。

  • 第4题:

    以下叙述中正确的是()

    A.int* p1; int ** p2; int *p3;都是合法的定义指针变量的语句

    B.指针变量只能通过求地址运算符(&) 来获得地址值

    C.语句p=NULL;与p=0;是等价的语句

    D.语句p=NULL;执行后,指针p指向地址为0的存储单元


    p=a

  • 第5题:

    若有定义和语句“double r=99, *p=&r; *p=r;”,则以下正确的叙述是 。

    A.以上两处的*p含义相同,都是给指针变量p赋值

    B.在“double r=99, *p=&r;”中,把r的地址赋值给了p所指的存储单元

    C.语句“*p=r;”中,把变量r的值赋给指针变量p

    D.语句“*p=r;”中,将变量r的值赋给p所指向的存储单元


    B:在”double r = 99, *p = r”中,把r的地址赋值给了p所指向的存储单元