小编use*_*871的帖子

字符数组的大小和字符指针的大小

我有一段C代码,我不明白该sizeof(...)函数是如何工作的:

#include <stdio.h>

int main(){
   const char  firstname[] = "bobby";
   const char* lastname = "eraserhead";
   printf("%lu\n", sizeof(firstname) + sizeof(lastname));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,sizeof(firstname)是6,sizeof(lastname)是8.

bobby宽5个字符,宽eraserhead11个.我期待16.

为什么sizeof对于字符数组和指向字符的指针表现不同?

任何人都可以澄清吗?

c sizeof char

17
推荐指数
2
解决办法
5万
查看次数

给出一个单词,打印其索引,可以相应增加单词

想象一下单词的字母.

例:

 a ==> 1 
 b ==> 2 
 c ==> 3 

 z ==> 26 
 ab ==> 27 
 ac ==> 28 

 az ==> 51 
 bc ==> 52 
 and so on. 
Run Code Online (Sandbox Code Playgroud)

这样字符序列只需要按升序排列(ab有效但ba不是).给定任何单词如果有效则打印其索引,否则打印0.

 Input  Output 

 ab      27 

 ba       0 

 aez     441 
Run Code Online (Sandbox Code Playgroud)

在这个问题中,我可以轻松地做数学,但我没有得到任何算法.

我在数学方面所做的是

一封信26

两封信325

.

.

.

等等

algorithm

15
推荐指数
1
解决办法
1010
查看次数

使用类型转换构造函数的参数的问题

#include <iostream>

struct Foo
{
    Foo(int d) : x(d) {}
    int x;
};

int main() 
{ 
    double x = 3.14;

    Foo f( int(x) );

    std::cout << f.x << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译此代码时,我收到以下错误:

[错误]请求'f'中的成员'x',这是非类型'Foo(int)'

假设在int main我删除intFoo f(int(x)).我的意思是如果我这样写:

     Foo f(x);
Run Code Online (Sandbox Code Playgroud)

代码编译正确,输出为3.

那么如果我们输入类似Foo f(int(x))的参数来调用构造函数会发生什么呢?

c++ constructor

5
推荐指数
1
解决办法
127
查看次数

问题与条件运算符

#include<stdio.h>
int main()
{
  printf("%d\n", 4 ?: 8);
}
Run Code Online (Sandbox Code Playgroud)

根据C标准,这个程序是无效的,因为它缺少?:.之间的表达式.但有趣的是,当我编译它正在打印的代码时.如果4它会打印4而不是显示任何编译错误

c gcc ternary-operator

3
推荐指数
1
解决办法
74
查看次数

给出一个数字打印下一个具有相同数量的数字

给定一个数字,我们必须找到下一个最高数字和前一个数字,它们的二进制表示中具有相同数量的1位

我的解决方案是一种强力方法,即增加数量并计算1的数量,如果它具有相同数量的1然后打印它

以前的数字与上述方法相同

是否有任何优化的解决方案而不是检查所有数字?

c++ bit

2
推荐指数
1
解决办法
658
查看次数

通过分支语句和普通循环编写循环之间的区别是什么

例如,通过分支跳转语句和正常循环来编写循环之间的区别是什么

        main()
        {
        int i=0;
        while(i<9)
        {
          //do something
           i++;
        }
Run Code Online (Sandbox Code Playgroud)

        main()
        {
            int i=0;
            label:
             //do something
              i++;
             if(i<9)
              goto label;
         }
Run Code Online (Sandbox Code Playgroud)

两者的表现是否相等?

c++ loops

2
推荐指数
1
解决办法
494
查看次数

标签 统计

c++ ×3

c ×2

algorithm ×1

bit ×1

char ×1

constructor ×1

gcc ×1

loops ×1

sizeof ×1

ternary-operator ×1