C++ Primer Plus 第六版第八章编程练习答案

本文提供了C++ Primer Plus第六版第八章的编程练习解答,包括字符串操作、结构体、函数模板等知识点的应用,例如:字符数组操作、自定义结构体CandyBar、字符串转换为大写、动态分配内存的字符串处理、最大值函数模板以及数组求和等。
摘要由CSDN通过智能技术生成

#include <iostream>
#include <cstring>
#include <cctype>

using namespace std;

void q1();
void print(char * a, int b = 0);

const int Len = 40;
struct CandyBar
{
    char maker[Len];
    double weight;
    int calo;
};
void q2();
void setnum(CandyBar & a, char * m = "Millennium Munch", double w = 2.85, int c = 350);
void show(const CandyBar & a);

void q3();
void Upper(string & a);

struct stringy{
    char * str;
    int ct;
};
void q4();
void set(stringy & a, char * b);
void show(const stringy & a, int i = 1);
void show(const char a[], int i = 1);

void q5();
template<typename T> 
T max5(const T a[]);

void q6();
template<typename T>
T maxn(const T a[], int n);

typedef char * charptr; 
/*
若写为  
template<> 
char * maxn(const char * a[], int n);
会报错:template-id 'maxn<>' for 'char* maxn(const char**, int' does not match any template declaration 

在模板的定义中, const T 所代表的是一个常量。那么 const char* 是一个常量吗?
不是,它是一个非常量指针(编译器允许改变它的值,让它指向别处),指向一个常量(编译器不允许修改它所指向的内容)。
所以,编译器判定显式特化与函数模板定义不匹配。

正确的写法是:

typedef char* char_ptr;

template<> char_ptr max_e (const char_ptr ar[], int n)

或者写为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值