小编Shi*_*ora的帖子

引用static_cast和指向指针static_cast的引用的开销

引用static_cast的引用是否与指向static_cast的指针具有相同的运行时间成本?

例如

class B;
class A: public class B;

A obj;
A& ref = obj;
A* ptr = &obj;

// 1
static_cast<B&>(ref);
// 2
static_cast<B*>(ptr);
Run Code Online (Sandbox Code Playgroud)

c++ pointers reference

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

引用实际上会占用内存吗?

读完这个答案后,我不太确定引用是否确实占用内存。我发现当编译器用引用的变量替换引用时,它不会占用内存,就像用引用的变量交换引用一样。

然而,

在一般情况下,编译器通常将引用实现为指针。但他们通常有更多关于参考可能指向的信息,并将其用于优化。

由于指针确实占用内存,那么由于编译器将其设置为指针,该引用现在不会导致占用内存吗?在编译器选择使引用成为指针而不是仅仅交换它的情况下,可以说引用实际上确实占用了内存,但以一种稍微隐式的方式?

事实上,编译器什么时候选择将引用实现为指针而不是交换,或者编译器之间的情况不同?

c++ pointers reference

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

这些类型如何(int(*ptr)[3])= a; (其中a = = int a [] [3] = {1,2,3,4,5,6})语句在C中工作?增量"ptr"给出了意想不到的结果

对于以下代码:

#include <stdio.h>
int main()
{
    int a[][3] = {1, 2, 3, 4, 5, 6};
    int (*ptr)[3] = a;
    printf("%d %d ", (*ptr)[1], (*ptr)[2]);
    ++ptr;
    printf("%d %d\n", (*ptr)[1], (*ptr)[2]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

应该打印什么?我期待:

2 3 3 4

但输出是:

2 3 5 6

我期待输出,2 3 3 4 因为最初ptr它指向二维数组的第一行a[][3].因此(*ptr)[1],首先printf会给我们2,就像明智的(*ptr)[2]会给我们3.但是++ptr在线之后它将开始指向第一行的第二个元素a[][3].因此(*ptr)[1],第二行现在应该给我们3,同样(*ptr)[2]应该给我们4.

c arrays pointers pointer-arithmetic

3
推荐指数
2
解决办法
753
查看次数

如何为输入中显示的文本创建偏移量?

我正在创建一个基本的登录功能,真的没什么花哨的。 在此输入图像描述

这就是我现在所拥有的,但这就是我想要拥有的:

在此输入图像描述

我不想只是添加空格,因为当用户单击输入字段时,它会清除输入。但我不想只是将其清除到另一个空间,因为用户可以将其删除。我想要一个预制属性在左侧有一个小的空间偏移,如果我稍后评估输入,最好忽略它。提前致谢。

html css input

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

如何传递一个动态分配的数组,其中"运行时确定的大小"作为参考?

我知道如何传递一个常量大小的数组作为引用,但我想知道如何传递一个可变大小的数组作为对另一个函数的引用.任何帮助将非常感激.谢谢

例如,我有以下代码片段:

void y(int (&arr)[n]) //Gives error
{}

void x(Node * tree, int n)
{
     int arr[n];
     y(arr);
}
Run Code Online (Sandbox Code Playgroud)

我听说我们可以模板化函数并使大小成为模板参数,但我无法这样做.

c++ arrays reference

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

cin作为产生垃圾值的变量名

对于以下代码:

#include<iostream>
using namespace std;
int main ()
{
       int cin;
       cin >> cin;
       cout << "cin : " << cin;
       return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期望输出为:

cin : <input>
Run Code Online (Sandbox Code Playgroud)

但输出是:

cin : <junk value>
Run Code Online (Sandbox Code Playgroud)

c++ namespaces keyword

-4
推荐指数
2
解决办法
345
查看次数

标签 统计

c++ ×4

pointers ×3

reference ×3

arrays ×2

c ×1

css ×1

html ×1

input ×1

keyword ×1

namespaces ×1

pointer-arithmetic ×1