1.若下列程序的运行结果是6 3,fun函函数调用时的实参(题中?)应该为:

void fun(int  &a, int  &b){  //用的谁的引用,改变谁的值。int  k;k=a; a=b; b=k;
}
int main(){  int  a=3,b=6,*x=&a,*y=&b;fun(?);cout<<a<<" "<<b;//这里改变了ab的值,实参应该是ab.
}

A【正确答案: A】
A a,b
B &a,&b
C x,y
D *x,*y

//指针的引用就是用来改变指针的值(指针的指向)。

2.已知函数func 的原形是

double func(double *pd,int &ri);

变量x 和y 的定义是double x;int y;把x 和y 分别作为第一参数和第二参数来调用函数func,正确的调用语句是:
B【正确答案: B】
A func(x,&y);
B func(&x,y);
C func(&x,&y);
D func(x,y);

//引用的实参是本身,不是地址。

3.以下定义语句中正确的是:C【正确答案: C】
A char a='A’b=‘B’;
B float a=b=10.0; //不能连续赋。
C int a=10,*b=&a;
D float *a,b=&a;

4.以下程序段运行后,a的值是:

int a,k=4,m=6,*p1=&k,*p2=&m;
a=p1==p2;
cout<<a<<endl;#include <iostream>using namespace std;int main() {int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==p2;cout<<p1<<endl;            //0x6ffe08 p1的位置高。 cout<<p2<<endl;            //0x6ffe04 p2的位置低。cout<<p1-p2<<endl;         //1        相差一个元素。 cout<<p2-p1<<endl;         //-1cout<<(p1==p2)<<endl;      //0cout<<(p1<p2)<<endl;       //0cout<<(p1>p2)<<endl;       //1//p1大于p2是真,而且真的大一。 cout<<a<<endl;             //0return 0;
}

D【正确答案: C】
A 4
B 1
C 0
D 运行时出错,a无定值

CD豪_Dwight的博客:
指针变量是有加减运算的,但是要注意以下几点:

  1.   指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x2000 0000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址。指针变量可以加减,但是只能与整型数据加减,此时加减的含义并不是其地址值进行了加减,也就是说如果指针变量p的值是0x20000000,那么p=p+2;的值并不是0x2000 0002,并不是地址值的简单相加减,那么地址值加减多少是与指针指向的数据类型相关联的:如果在64位的操作系统上,p是指向整型数据的指针变量,那么p=p+2之后,p的存储的地址值变成0x2000 0008;同理,如果在32位的操作系统上,p是指向整型数据的指针变量,那么p=p+2之后,p的存储的地址值变成0x20000008,也就说实际上地址值加了sizeof(int)*2这么多。说明白点,我们加减的数字是以指针指向的数据类型为量度的,p+2表示p在内存中前移两个int的距离,如果p不是int类型,而是其他类型道理也是一样。同样指针与整型数据相减也是同样的道理。
    
  2.   指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数),例如对于int类型的指针p和p1.p1-p的意义表示他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是一样。指针变量的自加和自减实际上是与整数1的加减运算。
    
  3.    指针之间可以比较大小。但是同样也限于两个相同类型的指针变量,不同类型的指针变量之间比较大小没有任何意义。指针之间的大小比较的意义,表示在内存中他们指向的位置的高低关系。
    

栈的地址是由高端地址向低端增长

5.下列程序段的输出结果是:
D【正确答案: D】

int *p, *q, k = 1, j=10 ; p = &j; q = &k ; p = q ;    (*p)++;  //先取值,再自加,改变指针指向的元素的值。cout<<j<<k<<endl;

A 111

B 101

C 112

D 102

6.下列程序段的输出结果是:

void fun(int  *x, int  *y{cout<<*x<<*y;*x=3; *y=4;
}
int  main(){  int  x=1,y=2;fun(&y,&x); //21cout<<x<<y<<endl;//43.return 0;
}

A【正确答案: A】
A 2 1 4 3
B 1 2 1 2
C 1 2 3 4
D 2 1 1 2

7.下列程序的运行结果是:

void fun(int  *a, int  *b){int  *k;k=a; a=b; b=k;    //改变不了。
}
int main(){  int  a=3,b=6,*x=&a,*y=&b;fun(x,y);cout<<a<<" "<<b;
}

B【正确答案: B】
A 6 3
B 3 6
C 编译出错
D 0 0

1.下面是对s的初始化,其中不正确的是:
D【正确答案: D】
A char s[5]={“abc”};
B char s[5]={‘a’,‘b’,‘c’};
C char s[5]="";
D char s[5]=“abcde”; //太长了。

2.已知: char str[]=“ab\n\012\”";则执行语句:cout<<strlen(str);的结果是:
C【正确答案: C】
A 3
B 4
C 6
D 12
//‘a’,‘b’,’\n’,’\012’,’\’,’"’.共六个。

3.调用strlen(”abcd\0ef\0g”)的返回值是:A【正确答案: A】
A 4
B 5
C 8
D 9
//strlen测字符串长度而不是在内存中的大小,从第一个字符开始,遇到’\0’结束,所以只测了’a’,‘b’,‘c’,'d’四个字符串的长度。

4.下面程序段的运行结果是:

char c[5]={'a','b','\0','c','\0'};
cout<<c<<endl;

B【正确答案: B】
A ‘a’‘b’
B ab //输出遇到’\0’结束。
C ab c
D ab▄(▄表示空格)

5.若有以下语句,则正确的描述是:

char x[]=”12345”;
char y[]={’1’,’2’,’3’,’4’,’5’};

A【正确答案: B】
A x数组和y数组的长度相同
B x数组长度大于y数组的长度 //数组x的字符串在内存中存储的时候,末尾会自动加’\0’,而数组y不会,所以是大于。
C x数组长度小于y数组的长度
D x数组等价于y数组

6.已知:char str1[20]=“abcde”,str2[20]=“xyz”;则执行语句: cout<<strlen(strcpy(str1,str2));输出结果是:B【正确答案: B】
A 9
B 3 //strlen()测字符串长度而不是内存大小。复制就是前面的内容没了。
C 5
D 8

7.有已排好序的字符串a,下面的程序是将字符串s中的每个字符按升序的规律插入到a中。请选择填空。

char a[20] = "cehiknqtw";
char s[] = "fblaz";
int i, k, j;
for (k = 0; s[k] != '\0'; k++) {j = 0;while (a[j] != '\0' && s[k] >= a[j])j++;                               //一直加到s[k]<a[j]for (i = strlen(a); i >= j; i--) { //i是字符串的长度,a[i]表示字符串末尾的'\0';'\0'也要跟着向后移动,不能把'\0'的位置占了。( 请填空 );}a[j] = s[k];                       //s[k]到a[j]的位置。则说明a[j]开始直到最后一个字符都往后移。
}
puts(a);

B【正确答案: B】
A a[i]=a[i+1]
B a[i+1]=a[i]
C a[i]=a[i-1]
D a[i-1]=a[i]

8.下列程序的执行结果是: 1225 【 正确答案: 12】

#include<iostream>using namespace std;int main() {char ch[] = { "12ye25ri" };int i, s = 0;for (i = 0; ch[i] >= '0' && ch[i] <= '9'; i++) //条件是ch[i] >= '0' && ch[i] <= '9',一旦不满足,循环就结束。跟这条件在while里不一样。s = 10 * s + ch[i] - '0';cout << s << endl ;return 0;}

2021-06-21指针与变量 和字符数组作业。相关推荐

  1. (转)字符型指针变量与字符数组的区别

    (1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分 ...

  2. 第十节 字符串指针变量与字符数组的区别(十一)

    用字符数组和字符指针变量都可实现字符串的存储和运算.但是两者是有区别的.在使用时应注意以下几个问题: 1) 字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一 ...

  3. C++入门经典-例6.14-通过指针连接两个字符数组

    1:字符数组是一个一维数组,引用字符数组的指针为字符指针,字符指针就是指向字符型内存空间的指针变量. char *p; char *string="www.mingri.book" ...

  4. 指针系统学习5-对使用字符指针变量和字符数组的讨论

    虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈-- 主要概括起来有以下几点: 1. 字符数组由若干个元素组成,每个元素中  放一个字符,而字符指针变量中 ...

  5. 字符指针变量和字符数组的对比

    使用字符数组和指针变量都能实现字符串的存储和运算,但它们两者之间是有区别的,不应混为一谈,主要有一下几点: (1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串中 ...

  6. 对使用字符指针变量和字符数组的讨论

    区别:1.字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址). 2.赋值方式.对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值:char ...

  7. 字符指针变量和字符数组的比较

    用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈,主要有以下几点. (1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串 ...

  8. C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt

    C语言第13讲指针与字符串(字符数组).ppt 6.2.3 指针与字符串(字符数组) C语言用字符数组存放字符串. 字符数组元素个数确定,一般用下标控制循环. 字符串有效字符个数由0确定,用结束符0控 ...

  9. C语言字符数组与字符串的使用及加结束符‘\0‘的问题

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...

最新文章

  1. android上传本地图片到服务器上,Android使用post方式上传图片到服务器的方法
  2. CMMI过程域-MA度量和分析
  3. 暑假集训做题,比赛的网站
  4. mysql 日期 时间戳 转换
  5. urllib库parse模块的使用
  6. jaxb 生成java类_重用生成的JAXB类
  7. java代码连接redis_java代码连接redis
  8. Linux下性能监控工具介绍
  9. Linux Shell 脚本基础
  10. ubuntu+intellij IDEA+android环境配置
  11. 网络运维常见交换机故障
  12. R语言数据框行转列实例
  13. MySQL 5.5/5.6——概述 MySQL 客户端程序
  14. Android 布局文件添加edittext报:The following classes could not be found错误
  15. 抖音短视频流量获取攻略,掌握好这些一定可以出爆款
  16. 关于DES加密强制更新版(4.22)
  17. Android自定义睡眠下表统计图,Android 进阶自定义View(5)图表统计PieChartView圆饼图的实现...
  18. 自然语言处理实战——LSTM
  19. 问题:npm如何设置仓库地址?
  20. 【BZOJ4864】【BeiJing 2017 Wc】神秘物质(Splay)

热门文章

  1. Android:禁止APP录屏和截屏
  2. JS:二叉树(2)——递归操作节点、构造二叉树
  3. 智慧城市与智能网联汽车如何协同发展?
  4. zookeeper(五)集群角色epoch的选取
  5. 无法登录学校网站的解决办法
  6. 利用卷积神经网络实现手写字识别
  7. 【微信小程序/事件】事件响应的各种场景
  8. 【Wordle】Day8:昨天忘了的后果就是今天输了
  9. 一度智信:拼多多商家修改sku有什么影响?
  10. mysql 索引(2)(索引失效的问题及解决)