目录: 标题| 题干| 答案| 搜索| 相关
问题

有以下程序#include <stdio.h>main { in


有以下程序#include <stdio.h>main { int n,*p=NULL; *p=&n; printf("Input n:"); scanf("%d",&p); printf("output n:"); printf("%d\n",p);}该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是A.int n,*p=NULL; B.*p=&n; C.scanf("%d",&p) D.printf("%d\n",p);

  • Aint n,*p=NULL;
  • B*p=&n;
  • Cscanf("%d",&p)
  • Dprintf("%d\n",p);
参考答案
参考解析:

在C语言中存在直接存取和间接存取两种访问内存数据的方法。前者利用变量名隐式地访问内存:首先定义变量,然后由编译系统完成从变量名到内存地址的映射工作,用户通过变量名访问内存空间,变量地址对用户完全透明。后者则通过指针显式地访问内存:用户直接使用变量的地址,或者将变量的地址值储存于特殊的变量中,然后通过此特殊的变量获取地址值访问内存。为了更好地使用指针变量,C语言提供了获取变量地址和通过地址访问变量的运算符“&”和“*”。(1)取地址运算符“&”的使用格式为:&变量名,如&a表示变量a在内存中的地址。本运算符实现从变量到地址的转化。(2)指针运算符“*”的使用格式为:*指针变量名,如*p表示指针变量p所指向的变量的值。本运算符实现从地址到变量的转化。在本题中,程序的作用已经给出,下面分别分析各选项中的语句。在选项A中,定义了一个整型变量n和一个整型指针变量p,并使其指向一个空,即不指向任何变量,该语句是正确的语句;在选项B中,由于*p表示值,而&n表示地址,它们之间进行赋值操作明显是错误的;在选项C中,由于p是指针变量,没有&p表示方法,因此错误;在D选项中,输出的是p指针所指向的地址,而不是p指针所指向的变量值,不符合题目的要求。

分类:其他
相关推荐

1、以下程序的输出结果是#include <stdio.h>main

以下程序的输出结果是#include <stdio.h>main(){ int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%dn",a,b);}A.6,1 B.6,0 C.2,1 D.2,0A6,1 B6,0 C2,1 D2,0

2、有以下程序#include <stdio.h>main() {

有以下程序#include <stdio.h>main() { char b=2; printf("%dn", b=b<<3);}程序的运行结果是A.4 B.8 C.16 D.2000A4 B8 C16 D2000

3、有以下程序 #include <stdio.h> main()

有以下程序#include <stdio.h>main(){char c1=&rsquo;1&rsquo;,c2=&rsquo;2&rsquo;;c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回...

4、有以下程序:include<stdio.h>include<

有以下程序:include<stdio.h>include<strin9.h>main( ){printf{"%dn",strlen("%dn",strlen("ATSn012|"));}程序运行后的输出结果是( )。A3B8C4D9

5、以下程序的功能是# include <stdio.h>main

以下程序的功能是# include <stdio.h>main (){ FILE *fp1;*fp2; fp1=fopen ("file1","r"); fp2=fopen ("file2","w"); while (!feof (fp1)) fputc (fgetc (fp1),f...

6、有以下程序: #include<stdio.h> int fun

有以下程序: #include<stdio.h> int fun( ) {static int x=1; X*=2;return X; main( ) int i,s=1; for(i=1;i<=2;i++)s=fun( ); printf{¨%d ",s); } 程序运行后的输出结果是( )。A0B1C4D8