针对每道题的具体疑问见每题后边的括号,万分感谢!
1.以下定义语句中正确的是()正确答案:C
A)char a='A'b='B'; B)float a=b=10.0;
C)int a=10,*b=&a; D)float *a,b=&a;
(书上说指针的定义形式是int *a,可是为什么这题选C不选D呢?)
2.有以下定义语句:double r=99,*p=&r;*p=r; 则以下正确的叙述是()
A)以上两处的*p含义相同,都说明给指针变量P赋值
B) 在“double r=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元
C)语句“*p=r"把变量r的值付给指针变量P
D)语句"*p=r;"取变量r的值放回r中
(我不知道本题的正确答案,选B对吗?如果不对请详细解释一下)
3.若int a=511,*b=&a;则printf("%d\n",*b);的输出结果是()
A)无确定值 B)a的地址 C)512 D)511
(我不知道本题的正确答案,选D对吗?如果不对请详细解释一下)
4.设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()(正确答案:A)
A)scanf('%d,pa); B)scanf('%d,a); C)scanf('%d,&pa); D)scanf('%d,*pa);
(为什么不选D?)
5.有以下定义和赋值:int *p,*q, i=1,j=0; p=&i; q=&j;对以下的赋值语句,叙述中错误的是()(正确答案:C)
A)*p=*q;等同于i=j;
B)*p=*q;;是把q所指变量中的值付给p所指的变量
C)*p=*q;将改变p中的值
D)*p=*q;将改变q中的值
6.若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是()(正确答案:D)
A)int *i=NULL;
scanf("%d",i);
B) float *f=NULL;
*f=10.5;
C) char t='m', *c=&t;
*c=&t;
D) long *L;
L='\0';
麻烦大家解释得再详细些,我是个初学者,“尾芝”和“一颗坚强的草”的回答不够详细,我看不懂,最好每道题四个选项都说一下,万分感谢!
C语言指针问题
一、如有定义char y[4]= "321"则表达式 *y+2的值是'5' 。分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。二、 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 'T'。分析:z是二维字符...
c语言这几道题 关于指针的 望大神解答
1、D选项,*x本身就错误,因为x是int类型,没法使用*操作符。2、A之所以错是因为代码中有一句q=NULL,也就是说q是一个空指针了,你再向里面写东西就错了,而且你在vc6.0中可以试一下,马上会出现一条0xc000 0005的写异常。。3、是的,你不管给它赋值多少都是4的。。就好比一个4平方米的房子...
C语言指针问题
2、*(ptr++) += 123;由于是右侧操作(递增后缀),所以先取ptr地址后再递增ptr,此时取得的地址还是第一个元素地址(递增后ptr指向第二个元素,也就是7,这是第一次递增),因此是对6+123=129,并保存原地址,即第一个元素地址,因此6被改为129。3、输出时,由于printf为了左对齐参数格式,必须...
c语言中指针计算的问题
问题一:2010H是内存地址的表示形式。内容中的地址都是以十六进制表示的。H表示这是个十六进制数。问题二:2010H-2000H=10H。这是个十六进制数。一个字节用一个地址表示。10H转换成十进制数就是16。这就表示2010H和2000H这两个地址之间相差16个字节。因为浮点数组,每个元素占4个字节,16\/4=4。所...
几道C语言指针方面的问题
2.B,其中D是错的,因为楼主只是声明一个指针变量,你没有初始化,也就是没有分配内存,要是楼主直接int double r=99,*p;*p=r;虽然编译不会出错,但是 连接会出错,因为既然P没有分配空间,怎么能把值r放到里面的,要是改成这样:int *p=new int,r=99;*p=r就可以了。3.D,printf("%d\\n"...
C语言 指针进阶问题;
你的程序里有几个问题:1.编程思路和要求的偏差,要求里说明限制字符串的数量不超过10,但对字符串的长度没有限定,在你的程序里通过长度限定为10的text变量来接收输入的字符串,实际上已经把输入字符串的长度限定在了10的范围内;2.冗余的变量,在主函数里变量a可能原意是保存n的值(n的值在循环里...
关于c语言指针的一些问题
指针p 指向的单元 内容为 a [0] 3、a 是数组名的时候是正确的 他表示 a[0] = 指针p所指单元的内容。其实 理解指针的话 有一个很好的 方法 你可以把 指针变量p当做一个数组名 那么*p 也就表示 p[0] p也就表示指针 p 然后你就会知道该如何赋值了 。希望对你有所帮助 ...
问两道有关c语言字符指针的问题,请将程序每一步的意思告诉我,谢谢啦...
第一题答案:B。理由:*s与*t都是取出此时地址存储的值,while()语句里面的意思是,当指针s与t都不为空并且s指向的值等于t指向的值。。。当s或者t为空或者t与s指向的值不同时,while()结束,返回此时s指向的值减去t指向的值,所以为比较两个字符串的大小;第二题答案:A。理由:x的地址赋值...
C语言指针2到简单的选择题,来个大神解释一下,谢啦
2 选D y=(*++p)++;等价于 ++p;指针加1,就是指向第二个元素即3 y=(*p)++;由于是后自增,所以等价于y=*p;(p)++;即y等于3 3选D void (char s1,char s2){ while(*s2++==*s1++);\/\/ 写错了,应该是一个等于号 } 将s1每个元素赋值个s2的每个元素,也即相当于拷贝的功能 ...
c语言程序指针问题
二、指针变量赋值问题1、指针赋值带来的内存丢失在C语言中指针之间是可以相互赋值的,但是使用不当可能会造成部分内存的“丢失” ,即这部分内存空间不能再被该任何程序访问。如: main(){float *a, *b;a=(float)malloc( sizeof(...