2020.3.8第二次作业

一、学习笔记(观看内容:MOOC——C程序设计——1.1.4  指针与数组;1.2.1  指针运算)

二、相关程序

 

三、存在问题

1.判断:语句int *pprintf("%d",*p);中的*p含义相同。(F)

解析:前者表示指针变量,后者表示取指针指向变量的值。

2.若有说明:int n=2,p=&n,q=p;则以下非法的赋值为( D)。

B.p=q;    C.n=*q;    

问题:选项A,B中p与p的区别是什么?

努力:通过百度搜原题,只查到类似问题:

      若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是( )。
       A.p=q;
       B.*p=*q;
       C.n=*q;
       D.p=n:

3.判断题:若有定义int a[]={2,4,6,8,10},*p=a;a的值是数组首地址,则**(p+1)的值是4。( F ) 

[Error] invalid type argument of unary '*' (have 'int')

[错误]无效类型参数的一元'*'(有'int') 

改正:*(p+1)= 4

4.本程序在数组中同时查找最大元素和最小元素的下标,分别存放在函数main()的max和min变量中。

#include <stdio.h>

void find(int *, int, int *, int *);

int main(void)

{

  int max, min, a[]={5,3,7,9,2,0,4,1,6,8};

  find( a,10,&max,&min );

  printf("%d,%d\n", max, min);

  return 0;

}

void find(int *a, int n, int *max, int *min)

{

  int i;

  *max=*min=0;

  for (i = 1; i < n; i++)

  {

    if (a[i] > a [*max])    *max=a[i]    ;

    if (a[i] < a [*min])    *min=a[i]    ;

  }

}

问题:在DEVC++中经过编译,程序正常运行,结果正确,但为什么在PTA上显示部分错误?

5.若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于____。

 

  1. p++
  2. x++
  3. *(p++)
  4. &x++

 

解析:*p相当于x,(*p)++相当于x++

posted @ 2020-03-09 01:49  shenyuan  阅读(795)  评论(2编辑  收藏  举报