C语言指针习题
C语言指针-练习

复习题(二)一、基础题1、设有:int k[]={2,4,6,8,10,12}, *p=k+2; 表达式*(p+2)*p[2] 的值:100 。
2、设有:int a[10], *p1, *p2; 则执行语句:p1=a; p2=&a[5]; 则p2-p1的值:5。
3、设有:int x[]={4,3,2,1},q,*p=&x[1];则执行语句:q=(*--p)++ ; 后;变量q的值为4。
4、设有:int *p, a=10, b=1; 则执行以下语句:p=&a; a=*p+b; 后;a的值为:11。
5、下列程序段的输出结果是2,1 。
int k=1, j=2, *p=&k, *q=p;p=&j;printf("%d, %d",*p, *q);6、设x为整型变量,p为指向整型的指针变量,则让p指向x变量的赋值表达式是P=&x。
7、设有变量定义:float d[]={1.0,2.0,3.0,4.0,5.0}, *p=d+3;请写出printf("\n %f %f", *p, d[0]); 的输出结果为:4.0和 1.0。
8、设有变量定义如下:char s[]="Hello!", *p=s; int i;执行完for(i=0; *(p+i); i++); 后,变量i的值是_6_;*(p+i)的值是‟\0‟_。
9、函数void f(char s[ ], char t[ ]){ int k=0;while (s[k]=t[k]) k++;}等价于void f(char *s, char *t)1、{ while (*s++=*t++); }二、选择题1、下面的程序段用来定义指针并赋值,请选出语法正确的程序段( C )。
A)int *p; scanf(“%d”,p); B)int *s,k; *s=100;C) int *s,k; D) int *s,kchar *p,*c; char *p,*c;s=&k; p=&c; s=&k; p=&c;*p=‟a‟; s=p; *s=1;2、程序段:int *p,a,b=1; p=&a; *p=10; a=*p+b; 执行后,a的值(B)。
c语言指针编程题

1.统计一字符串在另一个字符串中出现的次数
参考答案
2.从命令行输入两个实型数据,请比较大小并输出。
参考答案
3.输入3个数a,b,c,按大小顺序输出。
利用指针方法
参考答案
4.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
参考答案
5.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
参考答案
6.有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人
退出圈子,问最后留下的是原来第几号的那位。
参考答案
7.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
参考答案
8.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调
用函数1/1+1/3+…+1/n(利用指针函数)
参考答案
9.八进制转换为十进制
参考答案
10.编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之
和以及所有偶数之和。
形参n给了数组中数据的个数:利用指针odd返回奇数之和,利用指针even返回偶数之和。
例如:数组中的值依次为:1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。
参考答案
11.复制字符串(不采用库函数strcpy( ))。
参考答案。
c语言指针的习题答案

指针练习题1.有以下程序main(){char a[]="programming",b[]="language";char *p1,*p2;int i;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}输出结果是A)gm B)rg C)or D)ga2.设有说明int(*ptr)[m];其中的标识符ptr是A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量3.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是A) p+1 B) a+1 C) a++ D) ++p4.若有语句int *point ,a=4;和point =&a;下面均代表地址的一组选项是A. a,point,*&aB. &*a,&a,*pointC. &point,*point,&aD. &a,&*point,point5.下面程序段的运行结果是char a[]=”language”,*p;p=a;while(*p!=’u’) {printf(“%c”, *p-32);p++;}A. LANGUAGEB. LANGuageNGngUAGE6.以下程序的运算结果是*p=1,m=3,n=5 。
#include<stdio.h>void main(){int a[5]={1,2,3,-4,5};int m,n,*p;p=&a[0];m=*(p+2);n=*(p+4);printf("*p=%d,m=%d,n=%d",*p,m,n);}7.写一通用函数slength,求出一个字符串的长度,并用main函数调用slength。
c 指针练习题

c 指针练习题C指针练习题C语言中的指针是一种强大而又复杂的概念。
它允许我们直接访问内存中的数据,并对其进行操作。
然而,由于指针的灵活性和复杂性,很多初学者在使用指针时会遇到困惑和错误。
为了帮助大家更好地理解和应用指针,下面将给出一些C指针的练习题。
1. 交换两个变量的值这是一个经典的C指针练习题。
请编写一个函数,接受两个整数指针作为参数,并交换这两个指针所指向的变量的值。
例如,如果输入为a=3,b=5,调用函数后,a=5,b=3。
2. 求字符串的长度请编写一个函数,接受一个字符串指针作为参数,并返回该字符串的长度。
注意,字符串的长度是指字符串中字符的个数,不包括字符串结尾的空字符'\0'。
3. 查找数组中的最大值请编写一个函数,接受一个整型数组指针和数组的长度作为参数,并返回数组中的最大值。
提示:可以使用指针来遍历数组,并使用一个变量来保存当前的最大值。
4. 字符串拷贝请编写一个函数,接受两个字符指针作为参数,并将第一个字符串拷贝到第二个字符串中。
注意,第二个字符串必须具有足够的空间来存储第一个字符串的内容。
5. 动态分配内存请编写一个函数,接受一个整数作为参数,并动态分配一个大小为该整数的整型数组。
然后,将数组的每个元素初始化为其下标的平方,并返回指向该数组的指针。
注意,使用完数组后,必须释放动态分配的内存。
6. 字符串反转请编写一个函数,接受一个字符串指针作为参数,并将该字符串反转。
例如,如果输入为"hello",则函数应该将其改为"olleh"。
7. 指针数组排序请编写一个函数,接受一个字符串指针数组和数组的长度作为参数,并按照字母顺序对字符串进行排序。
提示:可以使用字符串比较函数strcmp来比较两个字符串的大小,并使用指针来交换字符串的位置。
8. 指向函数的指针请编写一个函数,接受一个整数和一个指向函数的指针作为参数,并使用该函数对整数进行处理。
指针测试题及答案大全

指针测试题及答案大全一、选择题1. 指针变量的声明方式正确的是()。
A. int *p;B. int *p[];C. int *p[10];D. int (*p)[10];答案:A2. 指针变量可以存储()。
A. 整型数据B. 浮点型数据C. 函数名D. 任意类型的地址答案:D3. 指针变量的值是()。
A. 它所指向的变量的值B. 它所指向的变量的地址C. 它自己的值D. 它自己的地址答案:B4. 指针变量的类型转换时,以下说法正确的是()。
A. 可以将任何类型的指针转换为void指针B. 可以将void指针转换为任何类型的指针C. 可以将char指针转换为int指针D. 可以将int指针转换为char指针答案:A5. 指针变量的算术运算中,以下说法正确的是()。
A. 指针变量可以进行加法运算B. 指针变量可以进行减法运算C. 指针变量可以进行乘法运算D. 指针变量可以进行除法运算答案:B二、填空题1. 指针变量的值是它所指向的变量的________。
答案:地址2. 指针变量的类型转换时,可以将void指针转换为________类型的指针。
答案:任何类型3. 指针变量的算术运算中,指针变量可以进行________运算。
答案:减法三、简答题1. 描述指针变量与数组之间的关系。
答案:指针变量可以指向数组的首元素,从而可以通过指针访问数组中的所有元素。
数组名在大多数情况下可以作为指向数组首元素的指针使用。
2. 解释指针变量的类型转换规则。
答案:指针变量的类型转换遵循C语言的类型转换规则,可以将任何类型的指针转换为void指针,也可以将void指针转换为任何类型的指针。
但是,不同类型的指针之间不能直接转换,除非它们指向的数据类型是兼容的。
结束语:以上是指针测试题及答案大全,希望对您的学习有所帮助。
c语言第8章练习题--指针

1、int *p 的含义是(B)A.p是一个指针, 用来存放一个整型数B.p是一个指针, 用来存放一个整型数据在内存中的地址C.p是一个整型变量D. 以上都不对2、以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
void func(int x,int y, ___int*____ z){ *z=x+y; }3、有如下程序段(B)int *p,a=10,b=1;p=&a; a=*p + b;执行该程序段后,a的值是A. 12B. 11C. 10D. 编译出错4、若己定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( C)A) p+1B) a+1C) a++D) ++p5、以下程序运行后的输出结果是(A)void main( ){ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++) printf("%d,",*p);}A)1,2,3,4,5,6,7,8,9,0,B)2,3,4,5,6,7,8,9,10,1,C)0,1,2,3,4,5,6,7,8,9,D)1,1,1,1,1,1,1,1,1,1,6、下面程序的输出是(D)void prtv(int *x)printf("%d\n", ++*x);}main(){ int a=25;prtv(&a);}A) 23 B) 24 C) 25D) 267、有以下函数(B)char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值C) 一个临时存储单元的地址D) 形参p自身的地址值8、下列程序的输出结果是(7)#include<stdio.h>void fun (int *p1, int *p2){ if (*p1>*p2) printf ("%d\n",*p1);else printf ("%d\n",*p2);}void main ( ){ int a=3,b=7;fun (&a, &b);}9、下列程序的运行结果是(B)void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf("%d %d", a, b);}A) 6 3 B) 3 6 C) 编译出错D) 0 010、以下程序调用findmax函数返回数组中的最大值(B)findmax(int *a,int n){ int *p,*s;for(p=a,s=a; p-a<n; p++)if ( ) s=p;return(*s);}main(){ int x[5]={12,21,13,6,18};printf("%d\n",findmax(x,5));}在下划线处应填入的是(B)A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s11、下列程序段的输出结果是(A)void fun(int *x, int *y){ printf("%d %d", *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf("%d %d",x, y);}A) 2 1 4 3 B) 2 1 3 4 C) 1 2 1 2 D) 2 1 1 212、以下程序执行后输出的结果是___84________。
C语言指针精选习题和答案
C语言指针精选习题和答案一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <stdio.h>void swap(int *pa,int *pb) {int temp;temp = *pa;*pa = *pb;*pb = temp;}void main(){int a,b,c,temp;scanf("%d%d%d",&a,&b,&c); if(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(a>c)swap(&a,&c);printf("%d,%d,%d",a,b,c); }二、C语言用指针方法输入3个字符串按由小到大顺序输出#include "stdio.h"#include "string.h"int main(int argc, char* argv[]){char *t;char *p1=NULL,*p2=NULL,*p3=NULL;char ch1[20]={0},ch2[20]={0},ch3[20]={0}; p1=ch1;p2=ch2;p3=ch3;printf("No1:");scanf("%s",p1);fflush(stdin);printf("No2:");scanf("%s",p2);fflush(stdin);printf("No3:");scanf("%s",p3);fflush(stdin);if(strcmp(p1,p2)>0){t=p1;p1=p2;p2=t;}if(strcmp(p1,p3)>0){t=p1;p1=p3;p3=t;}if(strcmp(p2,p3)>0){t=p2;p2=p3;p3=t;}printf("%s\n%s\n%s\n",p1,p2,p3);return 0;}9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include<stdio.h>void main(){int a=0,b=0,c=0,d=0,e=0,i=0; char *p,s[20];while((s[i]=getchar())!='\n')i++; p=s;while(*p!=10){if(*p>='A'&&*p<='Z') a++;else if(*p>='a'&&*p<='z') b++;else if(*p==' ')c++;else if(*p>='0'&&*p<='9') d++;else e++;p++;}printf("大写字母 %d 小写字母 %d\n",a,b); printf("空格 %d 数字 %d 非字符 %d\n",c,d,e); }9.5写一个函数,将3 3矩阵转置 #include "stdio.h"void Transpose(int (*matrix)[3]) {int temp;int i, j;for(i=1;i<3;i++)/*转置*/{for(j=0;j<i;j++){temp = *(*(matrix+j)+i);*(*(matrix+j)+i) = *(*(matrix+i)+j);*(*(matrix+i)+j) = temp;}}}void main(){int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; Transpose(a);for(int i = 0;i<3;i++){for(int j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n");}}}9.6用指向一维数组的指针做函数参数 #include<stdio.h>#include<string.h>int main(){void sort(char (*s)[6]);//一维数组的指针做函数参数int i;char str[10][6];char (*p)[6];//定义一维数组的指针做函数参数printf("please input string:/n");for(i=0;i<10;i++)scanf("%s",&str[i]);p=str;//将str一维数组指针,赋值给p;sort(p);printf("the output sequence :/n");for(i=0;i<10;i++)printf("%s/n",str[i]);return 0;}void sort(char (*s)[6])//s指向一维数组的指针做函数参数; {int i,j;char temp[6], *t;t=temp;for(i=0;i<9;i++)//i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,for(j=0;j<9-i;j++)//第一次比较需要9次就是i=0到i=8共九次;第二次需要比较8次;依次类推;if(strcmp(s[j],s[j+1])>0){strcpy(t,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],t);}}9.7编一程序,用指针数组在主函数中输入十个等长的字符串。
C语言指针习题 附答案
C语言指针习题附答案c语言指针习题--附答案一、选择题1.变量的指针,其含义就是指本变量的_________.a)值b)地址c)名d)一个标志2.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是_____.a)a,point,*&ab)&*a,&a,*pointc)*&point,*point,&ad)&a,&*point,point3.若有说明;int*p,m=5,n;以下正确的程序段的是________.a)p=&n;b)p=&n;scanf(\scanf(\c)scanf(\d)p=&n;*p=n;*p=m;4.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________.main(){int*p,*q,a,b;p=&a;printf(“inputa:”);scanf(“%d”,*p);……}a)*p则表示的就是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p 只能用来说明p是一个指针变量5.尚无变量定义和函数调用语句:inta=25;print_value(&a);下面函数的恰当输入结果就是________.voidprint_value(int*x){printf(“%d\\n”,++*x);}a)23b)24c)25d)266.若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是a)*p=&a;scanf(\,p);b)p=(long*)malloc(8);scanf(\,p);c)scanf(\,p=&a);d)scanf(\,&a);7.有以下程序#includemain(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(\}程序运行后的输出结果是a)1,2,1,2c)2,1,2,18.存有以下程序main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(\}继续执行后的输入结果就是a)19.有以下程序main(){inta,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf(\}程序运行后的输出结果是()a)410.在16十一位编译系统上,若存有定义inta[]={10,20,30},*p=&a;,当继续执行p++;后,以下观点错误的就是()a)p向低地址安远了一个字节c)p向低地址安远了两个字节b)p向高地址移了一个存储单元d)p与a+1等价b)1c)0d)运行时出错,无定值b)2c)3d)4b)1,2,2,1d)2,1,1,211.存有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()a)5b)6c)8d)912.若有以下定义,则对a数组元素的正确引用是_________.inta[5],*p=a;a)*&a[5]b)a+2c)*(p+5)d)*(a+2)13.若有以下定义,则p+5表示_______.inta[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设尚无定义:inta[10]={15,12,7,31,47,20,16,28,13,19},*p;以下语句中恰当的就是()a)for(p=a;ad)for(p=a;a15.存有以下程序段#includeintmain(){intx[]={10,20,30};int*px=x;printf(\printf(\px=x;printf(\printf(\px=x;printf(\printf(\px=x;printf(\printf(\return0;}程序运行后的输入结果就是()a)11,11,11,12,12,20,20,20b)20,10,11,10,11,10,11,10c)11,11,11,12,12,13,20,20d)20,10,11,20,11,12,20,2016.设有如下定义:intarr[]={6,7,8,9,10};int*ptr;ptr=arr;*(ptr+2)+=2;printf(\则程序段的输出结果为a)8,10b)6,8c)7,9d)6,1017.若有定义:inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______.*(a+5)的值是_________.18.若存有以下表明和语句,intc[4][5],(*p)[5];p=c;能够恰当提及c数组元素的就是______.a)p+1b)*(p+3)c)*(p+1)+3d)*(p[0]+2))19.若存有定义:inta[2][3],则对a数组的第i行j列元素地址的恰当提及为______.a)*(a[i]+j)b)(a+i)c)*(a+j)d)a[i]+j20.若有以下定义:inta[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____.*(*(a+1)+0)的值是________.21.存有以下定义chara[10],*b=a;不能给数组a输入字符串的语句是()a)gets(a)b)gets(a[0])c)gets(&a[0]);d)gets(b);22.下面程序段的运行结果是_________.char*s=\s+=2;printf(\a)cdeb)字符'c'c)字符'c'的地址d)并无确认的输入结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()a)chars[10]=\c)chars[10];s=\24.设已有定义:char*st=\下列程序段中正确的是()a)chara[11],*p;strcpy(p=a+1,&st[4]);b)chara[11];strcpy(++a,st);c)chara[11];strcpy(a,st);d)chara[],*p;strcpy(p=&a[1],st+2);25.存有以下程序main(){chara[]=\char*p1,*p2;inti;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf(\}输出结果是()a)gmb)rgc)ord)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.a)c=*p1+*p2;b)p2=cc)p1=p2d)c=*p1*(*p2);27.以下正确的程序段是_________.a)charstr[20];b)char*p;scanf(\scanf(\c)charstr[20];d)charstr[20],*p=str;scanf(\scanf(\28.若有说明语句chara[]=\char*p=\则以下不正确的叙述是________.a)a+1则表示的就是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运转结果就是_______.#include#include。
c语言指针指针变量scanf,C语言指针练习(包括答案和详解)
c语⾔指针指针变量scanf,C语⾔指针练习(包括答案和详解)《C语⾔指针练习(包括答案和详解)》由会员分享,可在线阅读,更多相关《C语⾔指针练习(包括答案和详解)(21页珍藏版)》请在⼈⼈⽂库⽹上搜索。
1、第7章第7章指针71选择题1说明:int a=2,*p=,以下错误的赋值语句为(D):a p=q;b * p=* q;c a=* q;d q=a;a是整数,int*p,*q定义指针,p,q是指向整数的指针。
p获取a的地址,q获取p的地址p。
q是指针(即地址),*p和*q是此指针指向的整数值(此地址中存储的值)。
a)如果将q的地址分配给p,则p和q完全相同。
都指向数字2 B。
)q的数据个p C) q的数据为a D)a的数据为2。
⽆法提供地址。
如果未定义*q=a 2,则:int a=511,*b=的输出为:D A未确定的值B a的地址C 512D 511 int a=511,*b=a是a pri。
2、ntf(输出指针变量B)。
也就是说,指向变量的值输出结果511 3中已经有int a=2,*p1=下未正确执⾏的赋值语句为(b)。
Aa=* p1 *p2bp1=a;Cp1=p2da=* P1 *(* p2);据悉,程序中定义了以下语句:int *P1,* P2int k;P1=p2=⽆法在以下语句中正确执⾏是(B) A,k=* P1 * P2b,p2=k;c,P1=P2d,K=* P1 *(* P2);P1 P2是指针,K是整数变量,变量如何为指针赋值?a实际上是k=k k k (P1和P2都指向K,因此*P1*P2实际上是K) C是赋值语句d实际执⾏K=K*K 4变量的指针。
含义是变量(b。
3、)。
a值b地址c名称d标志5如果有说明语句:int a、b、c、* d=b scanf (%d% d% d、a、b、d);C scanf (%d% d% d,d scanf (%d% d% d,a,b,* d);对于Int c,* d=,c是整数数据,d是指向变量c的指针。
C语言指针章节选择题(新)
1. 若已定义: int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是A) a[p-a] B) *(&a[i])C) p[i] D) a[10]D2. 已知指针p的指向如下图所示,则执行语句*--p;后*p的值是a[0] a[1] a[2] a[3] a[4]┌──┬──┬──┬──┬──┐│10 | 20 | 30 │40 | 50 |└──┴──┴──┴──┴──┘p↑A) 30 B) 20C) 19 D) 29B3. 下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的结果是________。
main( ){ int a,b,*pa,*pb;pa=&a; pb=&b;scanf("%d,%d",pa,pb);*pa=a+b;*pb=a+b;printf("a=%d,b=%d\n",a,b);}A) a=13,b=13 B) a=8,b=8C) a=8,b=13 D) 出错C4. 下面程序段的输出结果是________。
main( ){ char string1[20],string2[20]={"ABCDEF"};strcpy(string1,string2);printf("%s\n",string1+3);}A) EF B) DEFC) CDEF D) ABCDEFB5. 下列程序执行后的输出结果是________。
main(){ int a[3][3],i,*pmul;pmul=&a[0][0];for(i=0;i<9;i++) pmul[i]=i+1;printf("%d\n",a[1][2]);}A) 3 B) 6C) 9 D) 随机数B6. 有如下程序段int *p,a=10,b=1;p=&a; a=*p+b;执行该程序段后,a的值为________。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指针变量是用来专门存放(A)的变量
A.地址
B.整型
C.实型
D.字符型
定义指针变量时,需要在指针变量名前加上(C)
A.!
B.@
C.*
D.&
定义指针变量int *pointer;,则指针变量名是(B)。
A.*pointer
B. pointer
C. &pointer
D. 以上3个都不是
若有以下定义int *p ,则变量p为(C)。
A. 整型变量
B. 字符变量
C. 指针变量
D. 非法变量
已有如下语句int k=2,*ptr1; ptr1=&k;下面能正确执行的赋值语句是(B)。
A. scanf(“%d”, k);
B. scanf(“%d”,ptr1);
C. scanf(“%d”,&ptr1);
D.scanf(“%d”,*ptr1);
若有定义:int a[5];则a数组中首元素的地址可以表示为(C)。
A. *a
B. a+1
C. a
D. &a[1]
若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是(D)。
A.*p=&a; scanf("%1f",p);
B.*p=&a; scanf("%f",p);
C.p=&a; scanf("%1f",*p);
D.p=&a; scanf("%1f",p);
有以下程序 main() {int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf("%d\n",c); }执行后的输出结果是(C)。
A.1
B.2
C.3
D.4
有如下程序段int *p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为(B)
A.12
B. 11
C.10
D.编译出错
对于基类型相同的两个指针变量之间,不能进行的运算是(C)
A.<
B.=
C. +
D. –
设有定义语句:int a=3,b,*p=&a;则下列语句中使b不为3的语句是(D)
A. b=*&a;
B. b=*p;
C.b=a;
D. b=*a ;
若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是(B)
A. i=*p;
B.*p=j;
C.i=&j;
D.i=**p;
设指针x指向的整型变量值为25,则printf("%d\n",*x);的输出是(C)
A.23
B.24
C.25
D. 26
若有说明语句"int a[10],*p=a;",对数组元素的正确引用是(C)
A. a[p]
B. p[a]
C.*(p+2)
D. p+2。