草庐IT

c++ - 这个函数的参数在哪里?

void*(*proto_type(longint,char*b))(constchar*b,unsignedshortintd);返回类型是void*,proto_type是函数名?或者这是指向函数的指针?哪些是参数:(longint,char*b)或这个(constchar*b,unsignedshortintd)请解释一下这个函数是如何工作的。 最佳答案 void*(*proto_type(longint,char*b))(constchar*b,unsignedshortintd);这是一个函数声明。函数名为proto_ty

c++ - 为什么 ~(true^true) 不是真的? boolean 运算符(否定)适用于 `unsigned char` s,但不适用于 boolean 值? (C++)

我听说通常除了0之外的“一切”都是真的。但是现在我身上发生了非常奇怪的事情……或者我只是认为我以正确的方式做事,而我却没有。这是正在发生的事情:当我想检查a是否等价于b时,我可以使用NOT(aXORb)。当我检查unsignedchar时,一切正常,例如unsignedchara=5;unsignedcharb=3;unsignedcharc=~(a^b);给我c==249:a是:00000101,也就是5。b是:00000011,也就是3。~(a^b)是:11111001,即249。现在,让我们用bool来试试这个。cout这让我在控制台中:-1-2-2-10110false虽然我希

c++ - 开关盒中的 char 和 int 有什么区别?

我最近开始学C++,在学习switchcase的时候,我有这个疑惑。如果我在以下代码中使用int或char有什么区别:intFav_Car;switchcase代码如下switch(Fav_Car){case'1':cout当我运行该程序时,我注意到使用int会返回默认大小写,而使用char则效果很好。为什么会这样?而且,如果我使用case'1':和case"1":有什么区别 最佳答案 你的误解与switch()构造无关,都是关于单引号'':如果你写1,你得到一个值为1的整数,当你把它放在单引号'1'中时,你得到数字1的ASCII字

c++ - 没有堆的 static const std::vector<char> 初始化?

假设我想要一个无符号字符的std::vector。它是用初始化列表(这是C++11)初始化的,永远不会改变。我想避免任何堆分配,即使在启动时也是如此,并让整个vector像const字符串一样存在于数据段中。那可能吗?IE:staticconstvectorv{0x1,0x2,0x3,0x0,0x5};(这是一个有点学术性的问题;我知道为此使用C数组并不难。) 最佳答案 为什么不直接使用std::array为此?staticconststd::arrayv{0x1,0x2,0x3,0x0,0x5};这避免了任何动态分配,因为std:

c++ - 返回字符数组求和的结果

最近在一次采访中,我被问到一个问题,要编写一个将两个字符数组(整数)作为输入并返回输出字符数组的函数。函数签名:char*find_sum(char*a,char*b)如何解决这个问题?示例场景:find_sum("12345","32142")="44487"注意:位数可以很多(1-100)。 最佳答案 您可以使用字符数组方法添加大量数字。但是你需要在每次使用后删除char*或使用一些智能指针。char*find_sum(char*a,char*b){intlenA=strlen(a),lenB=strlen(b);intmax=

c++ - 使 char 函数参数为 const?

考虑这个函数声明:intIndexOf(constchar*,char);其中char*是一个字符串,char是要在字符串中查找的字符(如果未找到char则返回-1,否则返回其位置)。使char也const有意义吗?我总是尝试在指针参数上使用const,但当按值调用某些内容时,我通常会不使用const。你有什么想法? 最佳答案 假设您不打算调整任一参数的值:我会将函数定义为:intIndexOf(constchar*const,constchar){//...}但保留函数声明为:intIndexOf(constchar*,char)

c++ - 调用对象 'char* ' 类型不是函数或函数指针

我有这个函数,它应该为给定的char*设置特定的时间格式:staticvoidtimeStamp(char*time){time(&strTime);strTime和curTime是这样声明的:tm*curTime;time_tstrTime;但出于某种原因我得到:calledobjecttype'char*'isnotafunctionorfunctionpointer在标记的地方。知道为什么吗?顺便说一句,我正在使用xCode。 最佳答案 您的函数参数time是一个指向char的指针。但是,在您的函数体中,如果它是您可以调用的函

c++ - 将char数组中的元素转换为int

我有一个包含80个元素的char数组,我正在尝试将特定元素转换为integer,但出现了一些数字错误。十六进制的数组元素40是0xC0。当我尝试将它分配给一个integer时,我得到了十六进制0xFFFFC0,我不知道为什么。chartempArray[80];//Readinfromfile,withelement40as0xC0inttempInt=(int)tempArray[40];//Outputas0xFFFFC0insteadof0x0000C0 最佳答案 根据您的实现,C++中的char类型是signed类型或uns

c++ - C++内存管理的奇怪之处

考虑这段代码的输出:charA='a';charB[]="b";cout它输出“ab”(A和B的串联),我想知道为什么。请解释一下。 最佳答案 因为&A是一个char*。由char*表示的字符串需要有一个'\0'终止字节。&A指向单个char,后面没有'\0'。因此,尝试打印此文本字符串会导致未定义的行为。 关于c++-C++内存管理的奇怪之处,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

c++ - 缓存 const char * 作为返回类型

阅读了一些关于我的C++的内容,发现了这篇关于RTTI(运行时类型识别)的文章:http://msdn.microsoft.com/en-us/library/70ky2y6k(VS.80).aspx.好吧,那是另一个主题:)-然而,我在type_info类中偶然发现了一个奇怪的说法,即关于::name方法。它说:“type_info::name成员函数返回一个constchar*到一个以null结尾的字符串,表示该类型的人类可读名称。内存指向已缓存,永远不应直接释放。”你怎么能自己实现这样的东西!?我以前经常在这个确切的问题上苦苦挣扎,因为我不想为调用者创建一个新的char数组来删除