#P2054. 指针训练题

指针训练题

  1. 阅读程序,判断其运行输出
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int x[10] = {1,2,3,4,5,6,7,8};
	int *p;
	p = &x[3];
	
	cout<<*(p+2)<<" "<<*p+2;

	return 0;
}

运行程序,输出为:{{ input(1) }}

  1. 阅读程序,判断其运行结果
#include<bits/stdc++.h>
using namespace std;
int f1(int a,int b)
{
	int * pa,*pb,*pt;
	pa = &a;
	pb = &b;
	pt = pa;
	pa = pb;
	pb = pt;
	return *pa**pb;
}
int f2(int *pa,int *pb)
{
	int *pt;
	pt = pa;
	pa = pb;
	pb = pt;
	return *pa-*pb;
}
void f3(int *pa,int *pb)
{
	int t;
	t = *pa;
	*pa = *pb;
	*pb = t; 
}
int main()
{
	int a,b;
	a = 13;
	b = 7;
	
	cout<<f1(a,b)<<" "<<a<<" "<<b<<endl;
	cout<<f2(&a,&b)<<" "<<a<<" "<<b<<endl;

	f3(&a,&b);
	cout<<a<<" "<<b;
	
	return 0;
}

第一行输出 {{ input(2) }}

第二行输出 {{ input(3) }}

第三行输出 {{ input(4) }}

  1. 阅读程序,判断其运行结果
#include<bits/stdc++.h>
using namespace std;
char s[100];
int main()
{
	scanf("%s",s);
	scanf("%s",s+5);
	
	printf("%s\n",s);
	printf("%s\n",s+2);
	
	return 0;
}

运行程序,输入 abcde12345,回车,再输入 12345abcde,再回车

程序的第一行输出为:{{ input(5) }}

程序的第二行输出为:{{ input(6) }}

  1. 变量的指针,其含义是指该变量的 ( )。{{ select(7) }}
  • 地址
  • 一个标志
  1. 阅读程序
#include<bits/stdc++.h>
using namespace std;
int main()
{
	
	char *s="abcde";

	s+=2;
	cout<<s;
	
	return 0;
}

程序的运行结果为 {{ select(8) }}

  • 出错
  • cde
  • c
  • 字符 'c' 的对应地址
  1. 若有定义: int *p[4]; 则标识符 p {{ select(9) }}
  • 是一个指向整型变量的指针
  • 是一个指针,它指向一个含有四个整型元素的一维数组
  • 是一个指针数组名
  • 说明不合法
  1. 设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0];

则下列能够正确表示数组元素 a[1][2] 的表达式是 {{ select(10) }}

  • *((*prt+1)[2])
  • *(*(p+5))
  • (*prt+1)+2
  • *(*(a+1)+2)