首页 文章
  • 3 votes
     answers
     views

    在Rust中模仿克隆特征

    我有一个简单的链表类型和 Clone 的实现: #[deriving(Show)] enum List { Cons(int, Box<List>), Nil, } impl Clone for List { fn clone(&self) -> List { match *self { Cons(val,...
  • 4 votes
     answers
     views

    Rust的Arc和Rc类型与垃圾收集有何不同?

    The Rust Programming Language, first edition说Rust没有垃圾收集器: 它在没有垃圾收集器的情况下维持这些目标 但是,在discussing choosing your guarantees中它还说: Rc <T>是引用计数指针 . 换句话说,这让我们有多个“拥有”指向同一数据的指针,当所有指针都超出范围时,数据将被删除(析构函数将被运...
  • 128 votes
     answers
     views

    Visual Studio对删除的指针做了什么?为什么?

    我读过的一本C书指出,当使用 delete 运算符删除指针时,指向它的位置的内存是"freed",它可以被覆盖 . 它还指出指针将继续指向同一位置,直到它被重新分配或设置为 NULL . 但是在Visual Studio 2012中;这似乎不是这样的! Example: #include <iostream> using namespace std; int ...
  • 1 votes
     answers
     views

    如何正确地求和数组的元素w / out得到大的随机输出

    我写了两个函数并在main中调用函数 . 函数1 - 我编写了一个函数,它返回void并获取一个int *(指向整数数组的指针)或int [],以及int(表示大小) . 该函数需要将数组的所有元素初始化为非零值 . 函数2 - 我编写了另一个函数,它返回int并获取const int *(指向整数数组的指针)或int [],以及int(表示大小) . 该函数应该对数组的所有元素求和并返回总和...
  • 131 votes
     answers
     views

    delete []如何知道它是一个数组?

    好吧,我想我们都同意以下代码所发生的事情是未定义的,具体取决于传递的内容, void deleteForMe(int* pointer) { delete[] pointer; } 指针可能是各种不同的东西,因此对它执行无条件的 delete[] 是未定义的 . 但是,让我们假设我们确实传递了一个数组指针, int main() { int* arr = new int[5]...
  • 0 votes
     answers
     views

    复制构造函数中的C矢量数组

    我是新手复制构造函数,当我开始使用向量时似乎无法让它们工作 . // ROBOT CLASS class Robot { private: char *name; int size; int cmdCount; command *cmdList; char items[8][16]; in...
  • -1 votes
     answers
     views

    我应该用指向结构的指针还是仅仅在结构上定义我的func?

    在我看来,我似乎有两个选择: foo := Thing{} foo.bar() foo := &Thing{} foo.bar() func (self Thing) bar() { } func (self *Thing) bar() { } 用自己的东西或自我*事物来定义我的函数的更好的方法是什么? 编辑:这不是关于方法和函数的问题的重复 . 这个问题与Thing和&Thin...
  • 1 votes
     answers
     views

    将向量中的对象指针移动到不同的向量

    现在我有两个Object指针向量 std::vector<Object*> vec1; std::vector<Object*> vec2; 让我们说vec1有两个对象,vec2没有 . 如何在不破坏实际对象的情况下将vec1中的一个对象移动到vec2?因此,最后两个向量的大小为1,每个向量都有一个对象指针 .
  • 0 votes
     answers
     views

    C中malloc中的指针大小问题[重复]

    这个问题在这里已有答案: size of array in c 6个答案 我正在尝试编写一个可以打印指针变量大小的c程序,该变量指向malloc()分配的内存位置 . 我正在使用的C版本是C99 . 以下是我的代码: #include<stdio.h> int main() { int *temp; temp=malloc(sizeof(int)*3); printf(...
  • 2147 votes
     answers
     views

    什么时候应该使用static_cast,dynamic_cast,const_cast和reinterpret_cast?

    有什么用途: static_cast dynamic_cast const_cast reinterpret_cast C风格演员 (type)value 函数式转换 type(value) 如何决定在哪些特定情况下使用哪个?
  • 26 votes
     answers
     views

    C:对象的向量与指向新对象的指针的向量?

    我正在寻求通过编写示例软件渲染器来提高我的C技能 . 它采用由3d空间中的点组成的对象,并将它们映射到2d视口,并为视图中的每个点绘制不同大小的圆 . 哪个更好: class World{ vector<ObjectBaseClass> object_list; public: void generate(){ object_list.clear(); ...
  • -2 votes
     answers
     views

    如果指针指向数组或对象,它的值是多少? [关闭]

    我知道我的问题可能是非常基本的,但是我想知道在内存中有多个单元格的对象,比如数组和用户定义的对象(在内存中需要多个单元格,因此具有连续地址的范围)记忆),指针对这类物体的意义何在?是C中的变量包含内存中这些对象的地址(逻辑上不正确,因为这些对象在内存中占用了多个单元格,因此具有连续地址的范围),或者说,指向这些对象的指针只是开始这些对象的地址(更合理) . 请帮我理解;如果你不相信我对C指针定义的...
  • 0 votes
     answers
     views

    这个例子不应该改变内存地址而不是内存地址的值吗?

    在我正在阅读的一本书中,C从头开始,在第113页上,编写者创建了一个char数组: myString[80]; 然后他使用复制一些charectars的函数: strcpy(myString,"Hello there"); 然后他创建了一个指向数组的指针: *p1 = myString; 然后他使用偏移量并在该偏移处确定一个值: p1[4]='c'; 我的问题是,p1是...
  • 2 votes
     answers
     views

    我需要手动删除一个void *指针,然后指向另一个具体类型吗?

    假设我有一个指针 void* p ,然后在一些传入和传出函数之后,让我们说p现在指向 int . 然后我需要手动删除为 delete static_cast<int*>(p) ? 在大多数地方,人们说 delete 只有在 new 时才会发生 . 但在这种情况下,它不是,但C本身是否记得释放那些记忆?
  • 0 votes
     answers
     views

    带数组的指针:char * getCharacterAddress(char array [] [arraySize],int row,int column):

    我只是在尝试填充function.h中的空实现,但我不明白如何 . 在main.cpp测试中,我有以下内容: TEST_CASE("Testing getCharacterAddress()"){ const unsigned int rows = 5; const unsigned int columns = 5; char first[rows][columns] = {...
  • -2 votes
     answers
     views

    将指针传递给int数组,作为参数C

    我知道即使我通过键入arrayname作为参数传递一个数组(例如:getArrayInput(arrayexample);),它只会复制第一个元素的地址值而不是整个数组,我仍然想知道为什么这些代码会出错 . 我知道这不应该如何实现,但我想了解这个错误 . main.cpp | 13 |错误:无法将参数'1'的'int *'转换为'int **'为'void getArrayInput(int *...
  • 0 votes
     answers
     views

    无效指针代替int类型的指针[复制]

    这个问题在这里已有答案: Dereferencing the void pointer in C++ 4个答案 我是C / C的初学者,我正在努力学习指针 . 这是我的代码,用指针数组中的每个元素创建指针数组,指向数据数组中的元素: #include <iostream> using namespace std; //Pointers reference article //ht...
  • 4 votes
     answers
     views

    将char指针数组传递给C中的函数?

    我有以下代码: int main(){ char **array; char a[5]; int n = 5; array = malloc(n *sizeof *array); /*Some code to assign array values*/ test(a, array); return 0; } int test(cha...
  • 1 votes
     answers
     views

    为什么字符串有返回类型的指针?

    我知道指针是什么,但是当谈到字符串/数组时,我真的很困惑 . 如果某人有答案或网站解释它会很棒 . 例如: char * strncopy (char*dest, char * source, size_t); 为什么指针?它指向什么?指针通常存储地址吗? 在我的教科书中说,每个字符串构建函数都是指针char *类型 . 此外,我试图看看我是否可以编写一个可以清理的程序,但它不起作用 . 有人能...
  • 0 votes
     answers
     views

    指向不存储数据的字符串的指针数组

    我试图将文本文件中的单词存储在动态分配的字符数组中 . 我使用指针数组到字符数组,以便动态分配内存但由于某种原因,它只将最后一个输入字存储到我指向的所有字符数组中,即使在某些地方字符串不适合我分配较小字符串的空间 . 这是代码: #include <stdio.h> #include <stdlib.h> #include <string.h> int mai...
  • 0 votes
     answers
     views

    如何在golang中通过引用传递struct类型的接口?

    我需要通过引用传递struct类型的接口,如下所示 . 既然,我不能使用接口指针来构造结构类型变量,我应该如何更改下面的代码来将 te 值修改为 10 ?. package main import ( "fmt" ) func another(te *interface{}) { *te = check{Val: 10} } func some(te *...
  • 0 votes
     answers
     views

    深度复制struct在golang中具有指针0值

    我在 golang 中有一个结构如下 type Test struct { prop *int } 当 prop 指向零值时,我想对struct对象进行深度复制 . 真正的结构体中有更多的字段,我想要整个struct obj的深度复制 . 我尝试使用 gob 编码 - 解码方式,但由于设计的结果,它将指针转换为0指向nil指针here . 我也尝试使用 reflect.Copy ,但它发...
  • 4 votes
     answers
     views

    json.Unmarshal()接受指向指针的指针

    我非常偶然地注意到,我可以成功地将指向结构的指针和指向结构的指针传递给 json.Unmarshal() ,两者都可以正常工作: package main import ( "testing" "encoding/json" ) type Person struct { Name string Age int } fu...
  • 5 votes
     answers
     views

    我们是否在Go中过度使用指针传递?

    这个问题特定于函数调用,并且当通过值与指针传递结构时,指向Go优化器的可信度 . 如果您想知道何时在struct字段中使用值vs指针,请参阅:Go - Performance - What's the difference between pointer and value in struct? Please note: 我很容易理解,因此某些术语是不精确的 . 一些低效的Go Code 我们假设...
  • 1 votes
     answers
     views

    Golang - 为什么我可以从值类型中调用指针接收器方法? [重复]

    这个问题在这里已有答案: Why does a method with a pointer receiver still work when it receives a value? 2个答案 我再次经历Tour of Go,我对此感到困惑Methods Module 简而言之,指定了类型 Vertex 以及具有指针接收器的函数 type Vertex struct { X, Y floa...
  • 49 votes
     answers
     views

    为什么不能用指针接收器实现接口

    我很困惑为什么这不能编译: 不可能的类型断言:Faz没有实现Foo(Bar方法有指针接收器) 如果我为Faz.Bar制作Faz.Bar的接收器而不是Faz指针,那么它编译得很好,但我认为拥有指针接收器总是更好,所以值不被复制? package main import ( "log" ) func main() { foo := New().(Faz) ...
  • 3 votes
     answers
     views

    满足接口的Go结构方法的类型

    给出以下Go代码示例: package main import "fmt" type greeter interface { hello() goodbye() } type tourGuide struct { name string } func (t tourGuide) hello() { fmt.Println("He...
  • 0 votes
     answers
     views

    在解组JSON时指向接口与指向接口的指针

    请考虑以下结构和接口定义 . type Foo interface { Operate() } type Bar struct { A int } func (b Bar) Operate() { //... } 现在,如果我们尝试执行以下操作(playground): var x Foo = Bar{} err := json.Unmarshal([]byte(&q...
  • 10 votes
     answers
     views

    默认情况下golang结构方法中是否取消引用指针?

    我对结构上的golang方法感到困惑 . 我一直在他们的教程中跟随: func (p *Page) save() error { filename := p.Title + ".txt" return ioutil.WriteFile(filename, p.Body, 0600) } 从我的理解p是指针,你需要在检索属性之前取消引用指针,例如: filena...
  • 2 votes
     answers
     views

    当命名类型T的任何方法具有指针接收器时,复制类型T的实例

    我最近阅读了The Go Programming Language Book,这是学习golang编程语言的好资源 . 6.2节中有一段关于 T 类型的复制实例,当它是方法的指针接收器时,我无法理解它 . 有没有用一个有意义的例子来解释这一段? 6.2带指针接收器的方法如果命名类型T的所有方法都有一个T本身的接收器类型(不是* T),则复制该类型的实例是安全的 . 调用它的任何方法都必须复制 ...

热门问题