标签: pointer-address

delphi指针地址

在德尔福:

如何获得指针指向的地址(0x2384293)?

var iValue := Integer;
    iptrValue := PInteger;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  iptrValue := @iValue;
  iValue := 32342;
  //Should return the same value:
  Edit1.Text := GetAddressOf(iptrValue);
  Edit2.Text := GetAddressOf(iValue); 
Run Code Online (Sandbox Code Playgroud)

那么现实中的GetAddress是什么:)

delphi pointers pointer-address

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

获取指针的地址

我很抱歉,我知道有关指针,数组等的问题有一百万个,尽管基本上这样我似乎无法找到任何指向(哈哈!)的答案.

我有一个初始化为指向一块内存的指针,我知道我可以像访问数组一样访问这个内存:

char *mMem=new char[5000];
cout<<mMem[5]<<endl;
Run Code Online (Sandbox Code Playgroud)

实际上是:

char *mMem=new char[5000];
cout<<*(mMem+5)<<endl;
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何获取元素的地址- 我知道元素不是一个正确的单词,因为mMem不是一个数组 - 如果我的理解是正确的,那就不可能当然,因为看起来每个站点在指针和数组时都会使用它想要的任何单词.所以,如果我有:

char *mMem=new char[5000];
cout<<mMem[5]<<endl;
    or
cout<<*(mMem+5)<<endl;
Run Code Online (Sandbox Code Playgroud)

为什么运算符的地址不能正常工作:

cout<<&mMem[5]<<endl;
Run Code Online (Sandbox Code Playgroud)

我没有获取第5个元素的地址,而是从该元素开始打印出内存块内容.那么,为什么运算符的地址不能像我期望的那样工作呢?如何获得内存元素的地址?

c++ pointers pointer-address

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

连续声明的变量的内存地址顺序是否总是在下降?

为什么返回的指针地址的十六进制值总是按降序排列?例如在这里int a被宣布之前int d,所以它的地址总是出来是大于d,和同为&b,&e&c,&f我想知道,这是一个固定的行为,或者是这个编译器相关的?我正在使用gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-1)

#include<stdio.h>

int main(void){
    int a=1;
    int d=1;
    char b='a' ;
    char e='a';
    float c=1.0;
    float f=1.0;
    printf("a=%p\nd=%p\nb=%p\ne=%p\nc=%p\nf=%p\n",&a,&d,&b,&e,&c,&f);
   if (&a>&d)
        printf("&a>&d\n");
    else
    {printf("&a<&d");
    }
   if (&a>&d && &b>&e && &c>&f)
       printf("addresses are in descending order");
   else{
       printf("false");
   }

  return 0;

}
Run Code Online (Sandbox Code Playgroud)

输出:

a=0xbfc6bd98         //a>d
d=0xbfc6bd94         
b=0xbfc6bd9f         //b>e
e=0xbfc6bd9e
c=0xbfc6bd90         //c>f
f=0xbfc6bd8c
&a>&d 
addresses are in descending order
Run Code Online (Sandbox Code Playgroud)

PS:我是c的新手

c pointers pointer-address

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

转到C中的特定地址

我如何JMP到C中的特定地址?

我想用

goto 0x10080000
Run Code Online (Sandbox Code Playgroud)

这不行,有没有其他方法可以改变程序计数器的地址?

c assembly pointers goto pointer-address

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

指针地址如何具有不同的长度?

我刚刚执行了这个代码示例:

int *i = (int*) malloc( sizeof(int) );
printf( "%p, %p\n", &i , i );
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

0x7fff38fed6a8, 0x10f7010
Run Code Online (Sandbox Code Playgroud)

所以我想知道为什么第二个地址比第一个地址短?

c pointers c99 pointer-address

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

单个结构数据成员的奇怪指针地址

我今天观察到一些奇怪的行为,代码如下:

代码 :

#include <iostream>

struct text
{
    char c;
};

int main(void)
{
    text experim = {'b'};
    char * Cptr = &(experim.c);

    std::cout << "The Value \t: " << *Cptr << std::endl ;
    std::cout << "The Address \t: " << Cptr << std::endl  ; //Print weird stuff

    std::cout << "\n\n";

    *Cptr = 'z';   //Attempt to change the value

    std::cout << "The New Value \t: " << *Cptr <<std::endl ;
    std::cout << "The Address \t: " << Cptr << std::endl …
Run Code Online (Sandbox Code Playgroud)

c++ struct pointers pointer-address

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

手动设置指针值

我正在使用C.我正在尝试做的是一个函数,它将返回一个包含指向对象的地址的int.然后,使用我收到的int(包含地址),并构建一个指向该地址的指针.

示例:

MyClass* obj = SomeMethodReturningAPointerOfMyClass();
int address = (int) &obj;
return address;
Run Code Online (Sandbox Code Playgroud)

我认为它适用于这一部分.我得到的值是-4197276.(也许我完全错了?)

然后,另一方面,我想做的事情如下:

MyClass* obj = (MyClass*) address;
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我无法访问任何obj方法而不会收到错误.


我找到了一种方法:

MyClass* obj = SomeMethodReturningAPointerOfMyClass();
machine->registers[2] = (int)obj;
Run Code Online (Sandbox Code Playgroud)

然后,在我收到整数的另一种方法中:

MyClass* obj = (MyClass*)address;
Run Code Online (Sandbox Code Playgroud)

我可以完美地完成对象!可能不是那么干净但它应该为它的用途做好工作!

感谢所有花时间回答的人!

c int pointers pointer-address

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

指针逻辑

我一般都知道了指针的逻辑,但对于我来说,有一点与下面的代码有关.

#include <iostream>
using namespace std;

int main ()
{
int first = 50, 
second = 150;
int * p1, * p2;

p1 = &first;         //p1 is assigned to the address of first
p2 = &second;        //p2 is assigned to the address of second
*p1 = 100;           //first's value is changed as 100 by assigning p1's value to 100
*p2 = *p1;           //now p2's value should be 100 
p1 = p2;             //I think we want to change p1's adress as …
Run Code Online (Sandbox Code Playgroud)

c++ pointers pointer-address

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

GetProcAddress奇怪的返回地址

有人解释为什么下一个代码在ntdll.dll中返回一个指针?

GetProcAddress(LoadLibraryA("kernel32.dll"), "EncodePointer");
GetProcAddress(LoadLibraryA("kernel32.dll"), "DecodePointer");
Run Code Online (Sandbox Code Playgroud)

PS:如果调用kernel32的export表指向的函数,则抛出一个断点.

c windows loadlibrary getprocaddress pointer-address

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