标签: pointers

有没有办法在对象被销毁时运行一些代码?

在C#中我知道我的对象在超出范围时被垃圾收集,并且没有更多的指针/引用.有没有办法在这个垃圾收集发生时运行一些自定义代码?

.net c# garbage-collection pointers

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

我无法理解为什么这个程序打印8762作为结果

可能重复:
可以在其范围之外访问局部变量的内存吗?

#include <iostream>

double *foo(){
    double *varFoo = new double;
    double temp = 8762;
    varFoo = &temp;

    return varFoo;
}

int main(void){

    double *newVar = foo();
    std::cout<<*newVar<<std::endl;
    std::cin.get(); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道指针varFoo将在堆中创建,因此将保持在那里直到我调用delete,但是在函数foo中的temp变量呢?

它是一个局部变量,一旦foo函数的调用结束,临时变量的值将被存储的地址将被释放吗?

那么为什么我得到8762而不是垃圾呢?

谢谢

c++ heap pointers

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

如何将线程函数的地址作为回调传递给winapi?

我有一个简单的线程,在执行中我尝试使用线程中定义的函数之一的地址调用EnumWindows().所以我想这样做:EnumWindows(@cbEnumWindowsClickOK,0); 其中cbEnumWindowsClickOK是在线程类中定义的EnumWindowProc,如下所示:

TAutoClickOKThread = class(TThread)
private
     fExitEvent : THandle;
     function cbEnumWindowsClickOK(Wnd: HWND; Info: Pointer): BOOL;
public
   constructor Create(ExitEvent : Thandle);
   procedure Execute(); override;
end;
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我不断收到"错误:需要变量",暗示它不会将@cbEnumWindowsClickOK解释为地址.如果我将函数移动到全局范围(从线程中删除它)它确实有效.

有关如何解决此问题的任何想法?

delphi winapi multithreading pointers

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

机器中内存地址的内存地址?(C语言)

今天出于好奇,我尝试了一些非常奇怪的东西:

代码 :

int num = 2;
int * point = &num;

printf("%p\n" , &point);
Run Code Online (Sandbox Code Playgroud)


问题:

1)我做的第一件事是我将变量的地址附加num到指针point,之后我printf()用来打印出指针中的地址存储point.

2)稍后,我只是尝试修改代码(Above Code)以查看它将给出的行为,即通过使用printf()打印出指针的地址point而不是打印出指针中的地址存储,point这是变量的地址num.

3)尽管地址与变量的地址不同,它仍会打印我的地址num,只是想知道这个行为是否在C标准中得到了很好的定义?为什么指针也有自己的地址因为我认为它的工作是存储其他变量地址.



感谢您花时间阅读本文.

c pointers memory-address

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

这是`this`在Java中的指针吗?

我已经读过Java中没有指针概念,但是我也曾多次读过thisJava中引用当前对象的关键字.我仍然感到困惑的是,是否this可以将其作为指针调用,或者它是否根本不是指针.

如果它不是指针,它怎么能引用一个对象?如何保留当前对象的引用?我已经读过,对于C++,它this是一个包含当前对象地址的指针.

java pointers terminology reference

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

一元'*'的无效类型参数(有'int')

我正在为C科学家和工程师解决以下的作业问题:

Given the following declarations and assignments, what do these expressions evaluate to?

int a1[10] = {9,8,7,6,5,4,3,2,1}
int *p1, *p2;
p1 = a1+3;
Line 14: p2 = *a1[2];
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用gcc编译此代码,但是当我这样做时,它会给我以下错误:

w03_3_prob15.c: In function 'main':
w03_3_prob15.c:14:7: error: invalid type argument of unary '*' (have 'int')
Run Code Online (Sandbox Code Playgroud)

我正在使用以下命令进行编译:

gcc -o w03_3_prob15 w03_3_prob15.c -std=c99
Run Code Online (Sandbox Code Playgroud)

我真的不知道该怎么做.您对如何解决此错误有任何想法吗?

c gcc pointers

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

在C中操纵字符串

披露:这是大学工作.我不希望代码完成我的任务,而是想了解如何最好地操作C中的字符串.

我需要编写一个函数来以某种方式操作字符串(我不是说什么,以确保没有人提供确切的代码).

在python中,我只是做以下事情

def foo(str):
  return str
Run Code Online (Sandbox Code Playgroud)

显然事情并不像C中那么容易.

谁能告诉我如何最好地实现这一目标.我应该使用指针来模拟通过引用传递并只是操纵原始字符串吗?任何帮助/资源将不胜感激.

更新:我确实想对字符串执行一个操作并返回该操作的结果(也是一个字符串).我很乐意操纵原始字符串或返回它.哪个曾被认为是最佳实践.

我设置的任务是基于如何进行操作,所以我不想明确这样做.

所以Python将是:

def foo(str):
  #do something to str (which doesn't change it's length)
  return str
Run Code Online (Sandbox Code Playgroud)

c arrays string pointers

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

定义返回函数指针的函数的各种样式是什么?

我有一个功能:

int compare(char * c1, char * c2){
...
...
}
Run Code Online (Sandbox Code Playgroud)

我可以编写一个int ret_compare(void * item)返回指向比较的函数的各种样式是什么?

c pointers

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

int或char枚举到int,而不是ASCII

我正在玩一个扑克游戏并撞墙.任何帮助都会很棒.

我有12个卡值.值为char2-9或TJQKA(如下所示).我需要将它们传递给一个int数组,以便它们的值被传递(无论是int值还是枚举值)而不是它们的ASCII.

对于下面的例子,我想:

val[5] = {2,5,10,12,11}
Run Code Online (Sandbox Code Playgroud)

代替:

val[5] = {50,53,84,81,74}
Run Code Online (Sandbox Code Playgroud)
enum cardvalues {T=10 , J , Q , K , A}
int val[5];


string value = "25TQJ";

for (int i = 0; i < 5; i++)
{
    val[i] = value[i]; 
}
Run Code Online (Sandbox Code Playgroud)

c++ int enums pointers char

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

Java如何实现LinkedLists

Java没有指针的概念.那么java如何实现隐式可用的linkedList,甚至为此做一个浅表副本呢?

java pointers

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