2021-06-21指针与变量 和字符数组作业。
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的博客:
指针变量是有加减运算的,但是要注意以下几点:
指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是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类型,而是其他类型道理也是一样。同样指针与整型数据相减也是同样的道理。
指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数),例如对于int类型的指针p和p1.p1-p的意义表示他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是一样。指针变量的自加和自减实际上是与整数1的加减运算。
指针之间可以比较大小。但是同样也限于两个相同类型的指针变量,不同类型的指针变量之间比较大小没有任何意义。指针之间的大小比较的意义,表示在内存中他们指向的位置的高低关系。
栈的地址是由高端地址向低端增长
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)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分 ...
- 第十节 字符串指针变量与字符数组的区别(十一)
用字符数组和字符指针变量都可实现字符串的存储和运算.但是两者是有区别的.在使用时应注意以下几个问题: 1) 字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一 ...
- C++入门经典-例6.14-通过指针连接两个字符数组
1:字符数组是一个一维数组,引用字符数组的指针为字符指针,字符指针就是指向字符型内存空间的指针变量. char *p; char *string="www.mingri.book" ...
- 指针系统学习5-对使用字符指针变量和字符数组的讨论
虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈-- 主要概括起来有以下几点: 1. 字符数组由若干个元素组成,每个元素中 放一个字符,而字符指针变量中 ...
- 字符指针变量和字符数组的对比
使用字符数组和指针变量都能实现字符串的存储和运算,但它们两者之间是有区别的,不应混为一谈,主要有一下几点: (1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串中 ...
- 对使用字符指针变量和字符数组的讨论
区别:1.字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址). 2.赋值方式.对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值:char ...
- 字符指针变量和字符数组的比较
用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈,主要有以下几点. (1)字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串 ...
- C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt
C语言第13讲指针与字符串(字符数组).ppt 6.2.3 指针与字符串(字符数组) C语言用字符数组存放字符串. 字符数组元素个数确定,一般用下标控制循环. 字符串有效字符个数由0确定,用结束符0控 ...
- C语言字符数组与字符串的使用及加结束符‘\0‘的问题
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...
最新文章
- android上传本地图片到服务器上,Android使用post方式上传图片到服务器的方法
- CMMI过程域-MA度量和分析
- 暑假集训做题,比赛的网站
- mysql 日期 时间戳 转换
- urllib库parse模块的使用
- jaxb 生成java类_重用生成的JAXB类
- java代码连接redis_java代码连接redis
- Linux下性能监控工具介绍
- Linux Shell 脚本基础
- ubuntu+intellij IDEA+android环境配置
- 网络运维常见交换机故障
- R语言数据框行转列实例
- MySQL 5.5/5.6——概述 MySQL 客户端程序
- Android 布局文件添加edittext报:The following classes could not be found错误
- 抖音短视频流量获取攻略,掌握好这些一定可以出爆款
- 关于DES加密强制更新版(4.22)
- Android自定义睡眠下表统计图,Android 进阶自定义View(5)图表统计PieChartView圆饼图的实现...
- 自然语言处理实战——LSTM
- 问题:npm如何设置仓库地址?
- 【BZOJ4864】【BeiJing 2017 Wc】神秘物质(Splay)