C++数组与指针的使用 (扩展) – 作者:Johnson666

1.阅读以下程序,并给出横线处的正确代码

(1)程序的运行结果为:
image.png
则横线处的代码应为: i == 3 。
image.png
补充后的代码:
image.png
image.png
(2)程序的运行结果为:
image.png
则横线处的代码应为: c[i][j] = a[i][j] + b[i][j]; image.png
补充后的代码:
image.png
(3)程序的运行结果为:
image.png
则横线处的代码应为: *p = ‘#’;
image.png
补充后的代码:
image.png
(4)程序的运行结果为:
image.png
则横线处的代码应为: p = a; 或者 p = &a[0]; image.png
补充后的代码:
image.png
或者
image.png

2.编写C++程序,并给出代码及运行结果

(1)将只含有字符0-9的字符串存放至字符数组中,输出字符数组中重复次数最多的字符以及重复的次数。

#include <iostream>
using namespace std;
int main()
{
	char num[]="1221921239211",maxnum;  //maxnum存放重复次数最多的字符
    int count[10]={0};  //统计0-9字符各出现的次数
	int i,temp,max;    //max存放重复的最大次数
	for(i=0;num[i]!='\0';i++)
	{
        temp=num[i]-'0';
		count[temp]++;
	}
	max=count[0];
	for(i=1;i<10;i++)
	{
        if(max<count[i])
			max=count[i];
	}
	for(i=0;i<10;i++)//存在多个最多重复字符
	{
		if(max==count[i])
		{
		   maxnum='0'+i;
	       cout<<"重复次数最多的字符是:"<<maxnum<<endl;
	       cout<<"重复次数是:"<<max<<endl;
		}
	}
	return 0;
}

image.png
结果:
image.png

对引用的说明
(1)不能建立void类型的引用

void &a = 9; //错误

(2)不能对数组名进行引用

char c[6] = “hello”;
	char &r =c; //错误

(3)可以建立指针变量的引用

int i=5;
		int *p= &i;    // 定义指针变量p,指向i 
		int * &t = p; 
 		// t 是指向整型变量的指针变量的引用,初始化为p.

(4)可以将引用的地址赋给指针

int a = 3;
		int &b = a;
		int *p = &b;  
		// 指针p指向变量a的引用b,相当于指向a

(5)不能定义指向引用类型的指针变量

int & *p = &a; // 错误

(6)可以用常量或表达式对引用初始化,但必须用const限定,不允许改变该引用的值。

const int &c = 3; //合法

引用和指针的关系

(1)指针是个变量,可再赋值; 而引用建立时必须进行初始化并且决不会再关联其它不同的变量。
(2)指针操纵两个实体(指针值、指向的值);引用只能操纵一个实体。
(3)引用在内部用指针实现 ,被看成是指针常量,不能操作自身的地址值,只能访问所指向的实体。

实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用”?

来源:freebuf.com 2021-04-13 20:54:25 by: Johnson666

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论