已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是( )。
void print_value(int *x)
{ printf("%d\n", ++*x); }
A)23 B)24 C)25 D)26
若有说明:int *p, m=5, n; 以下正确的程序段是( )。
A)p = &n; scanf("%d', &p);
B)p=&n; scanf("%d", *p);
C)scanf("%d", &n); *p=n;
D)p=&n; *p=m;
若已定义int a=5; 下面对(1)、(2)两个语句的正确解释是( )。
(1)int *p=&a; (2)*p=a;
A)语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值
B)(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p
C)(1)在对p进行说明的同时进行初始化,使p指向a
(2)将变量a的值赋给指针变量p
D)(1)在对p进行说明的同时进行初始化,使p指向a
(2)将变量a的值赋给*p
有四组对指针变量进行操作的语句,以下判断正确的选项是( )。
(1) int *p, *q; q=*p;
int a, *p, *q; p=q=&a;
(2) int a, *p, *q; q=&a; p=*q;
int a=20, *p; *p=a;
(3) int a=b=0, *p; p=&a; b=*p;
int a=20, *p, *q=&a; *p=*q;
(4) int a=20, *p, *q=&a; p=q;
int *p, *q; q=&p;
A)1正确,234不正确
B)14正确,23不正确
C)3正确,124不正确
D)以上结论都不正确
若有语句int *point, a=4; 和point=&a; 下面均代表地址的一组选项是( )。
A)a, point, *&a B)&*a, &a, *point C)*&point, *point, &a D)&a, &*point, point
若需要建立如图所示的存储结构,且已有说明float *p, m=3.14; 则正确的赋值语句是( )。
A)p=m; B)p=&m; C)*p=m; D)*p=&m;
已有定义int k=2; int *ptr1, *ptr2; 且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。
A)k=*ptr1+*ptr2; B)ptr2=k; C)ptr1=ptr2; D)k=*ptr1*(*ptr2);
若有以下定义和语句,则选项中错误的语句是( )。
int a=4, b=3, *p, *q, *w;
p=&a; q=&b; w=q; q=NULL;
A)*q=0; B)w=p; C)*p=a; D)*p=*w;
有如下语句int a=10, b=20, *p1, *p2; p1=&a; p2=&b; 如左图所示;若要实现右图所示的存储结构,可选用的赋值语句是( )。
A)*p1=*p2; B)p1=p2; C)p1=*p2; D)*p1=p2;
若有说明语句,则以下不正确的叙述是( )。
char a[ ]="It is mine";
char *p="It is mine";
A)a+1表示的是字符t所在存储单元的地址
B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
若有说明:int *p1, *p2, m=5, n; 以下赋值语句全部都是正确的的选项是( )。
A) p1=&m; p2=&p1;
B) p1=&m; *p2=m;
C) p1=&m; p2=p1;
D) p1=&m; *p2=*p1;
若有以下说明和语句:
char *language[ ]={"FORTRAN", "BASIC", "PASCAL", "JAVA", "C"};
char **q; q=language+2;
则语句printf("%o\n", *q);___________。
A)输出的是language[2]地址
B)输出的是字符串PASCAL
C)输出的是language[2]元素的值,它是字符串PASCAL的首地址
D)格式说明不正确,无法得到确定的输出
char *s="C Language";表示s是一个指向字符串的指针变量,把字符串的首地址赋予s。
内存中的每个存储单元都有一个唯一的地址。
取地址运算符&与指针运算符*的优先级相同,结合方向为自右向左。
指针变量和它指向的变量之间的关系,可以用指针运算符“*”表示。
通过键盘输入两整型变量a和b,然后定义俩指针变量p1和p2指向整型变量a和b,
然后a和b之间相互比较,a若小于b,则调用函数swap,实现a和b两数交换,
然后在按大小顺序输出。注意:只允许在/******start******/和/******end******/之间添加代码。
运行结果如下:
程序功能:将字符串输出到屏幕。注意:只修改/*********Found************/下面一行。
#include<stdio.h>
程序功能:动态分配内存,将分配的内存地址输出。注意:只修改/*********Found************/下面一行。
#include<stdio.h>#include<stdlib.h>
程序功能:交换输出两数。注意:只修改/*********Found************/下面一行。