指针
指针是一种特殊的数据类型,不同于Int、double、float等常用数据类型,它存储的是数据的地址。C/C++程序员特别重视对指针的学习,因为指针能够通过地址直接操作内存,提高数据操作效率;但同时指针也是一颗危险的“定时炸弹”,如果不能正确操作指针会造成程序未定义行为,导致不知所“错”,产生巨大的维护成本。
-
要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是()。
-
有如下类定义,横线处应填写的表达式是()。class A{ char *a; public: A():a(0){} A(char *aa){ a=________; strcpy(a,aa); } ~A(){delete []a;} };
-
已知数组 int arr[5]={1,2,3,4,5}; ,下列语句中输出结果不是2的是()。
-
已知数组定义 char a[3][4]; ,下列表达式中错误的是()。
-
要定义一个具有5个元素的一维数组vect,初值依次是30,50,-88,0和0,下列定义语句中错误的是()。
-
以下程序段是函数返回a所指数组中最大的值所在的下标值,横线处的语句为()。fun(int*a,int n) { int i,j=0,k; k=j; for(j=i;j<n;j++) if(a[j]>a[k])________; return (k); }
-
以下程序的执行结果是()。#include<iostream.h> int a[8]={1,2,3,4,5,6,7}; void fun(int *pa,int n); void main() { int m=8; fun(a,m); cout<<a[7]<<endl; } void fun(int *pa,int n) { for(int i=0;i<n;i++) *(pa+7)+=*(pa+i); }
-
以下程序的输出结果是()。#include<iostream> using namespace std; void fun(char**q) { ++q; cout<<*q<<endl; } main() { static char*s[]={"HI","HELLO","TEST"}; char**p; p=s; fun(p); system("PAUSE"); return 0; }
-
有如下程序,该程序的输出结果是()。#include<iostream.h> void main() { char str[2][5]={"1234","5678"},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=str[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0';j+=2) s=10*s+p[i][j]-'0'; cout<<s; }
-
下面程序的输出结果是()。#include<iostream.h> #include<string.h> void main() { char a[]="Hello Test",b[]="Test"; strcpy(a,b); cout<<a<<endl; }
-
对于 int *pa[5]; 的描述,正确的是()。
-
下列将字符串进行初始化中,正确的是()。
-
有以下程序,输出结果是()。#include<iostream.h> void main() { static int b[][3]={{1,2,3},{4,5,6}}; b[0][2]=12;b[1][2]=18; cout<<"*b="<<*(*b+1)<<"t"<<b[0][2]+b[1][2]+*(*(b+1)+2)<<"\n"; cout<< b[0][2]+b[1][2]+b[2][2]<<endl; }
-
存在定义 int a[10],x,*pa; ,若 pa=&a[0]; ,下列哪个选项和其他3个选项不是等价的?
-
下面程序的输出结果为()。#include<iostream.h> void main() { int x; int &y=x;//变量引用 y=99; cout<<"x="<<x<<endl; }
-
下列关于指针的运算中,()是非法的。
-
若定义 int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; (0≤i≤9),则对a数组元素不正确的引用是()。
-
若有以下定义 int a=100,*p=&a; ,说法错误的是()。
-
执行语句序列 int x=1,&y=x; cout<<x<<"-"<<y<<endl; ,输出结果为()。
-
如果有以下定义及初始化: int a=3,*p=&a; ,则由此可以推断,*p的值是()。