变量与指针、数组与指针习题详解

本文详细分析了C/C++编程中关于变量与指针的习题,包括指针的赋值、逻辑表达式的处理以及类型匹配。同时,文章也探讨了数组与指针的相关问题,如字符串的存储、字符数组的赋值及字符串比较函数等。通过实例解析,帮助读者深入理解C/C++中变量、指针和数组的概念与操作。
摘要由CSDN通过智能技术生成

变量与指针

1.有如下语句int a=10,b=20,*p1=&a,*p2=&b;如果让两个指针变量均指向b,正确的赋值方式是  B    

A)*p1=*p2;    B)p1=p2;    C)p1=*p2;    D)*p1=p2;

分析:考点为类型的匹配,由于p1、p2都为指针类型,故可赋值。

2.执行以下程序后,a的值为 0  b的值为 7  

int main()

{int a,b,k=4,m=6,*p1=&k,*p2=&m;

 a=p1==&m;

 b=(-*p1)/(*p2)+7;

 cout<<a<<b;

 return 0;

}

分析:此处的 a=p1==&m;可解释为将逻辑表达式p1==&m的值赋给a。若表达式为真,a就为1,若表达式为假,a就为0。

3.p1p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是 B    

A)c=*p1+*p2;    B)p2=c;    C)p1=p2;    D)c=*p1*(*p2);

分析:类型不匹配,p2为指针类型,而c为字符类型。

数组与指针

1.下面判断正确的是   C   

A)char *a="china";等价于char *a;*a="china";

B)char str[10]={"china"};等价于char str[10];str[]="china";

C)char *s="china";等价于char *s;s="china";

D)char c[6]="china",d[6]="china";等价于char c[6]=d[6]="china";

分析:A选项,后面的指针a并没有被赋值,不能直接对其所指对象赋值,而且即使被赋值,此选项中*a就是a[0]只能给它赋值一个字符而不是字符串,但由于a没有被赋值,所以也不能对*a赋值。

   B选项,str[]只能是在声明时这么用,其它在其它地方出现[]中必须要有下标。

   D选项,前后两种方式存储元素地址不同,属于不同的分配空间里的。

2.char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是  C    

A)9    B)5    C)6     D)7

分析:该字符串所表示的字符分别为'\t'、'a'、'\017'、'b'、'c'、'\0',在编译时,系统默认在字符串最后一个加上'\0'。

3.下面程序段中,for循环的执行次数是  C   

char *s="\ta\018bc";

for( ;*s!='\0';s++) cout<<"*";

A)9    B)5     C)6     D)7

分析:这个字符串\ta\018bc 其中有两个 转义字符 \t\01

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值