小编Mat*_*att的帖子

你会在DB,坐标或地址中存储什么?

我正在构建一个使用GMaps API v3的应用程序,并利用地理编码功能,我不知道它是否更好地存储在数据库中:

  1. 坐标(纬度和经度)
    • 当我需要放置一个标记时,就把它放好
    • 当我需要地址时,查询API
  2. 地址(作为字符串)
    • 当我需要放置标记时,查询API
    • 当我需要发布地址时,只需打印它
  3. 两者都存储

你会推荐什么?

提前致谢!

google-maps geocoding geolocation coordinates street-address

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

C指针和地址

我一直以为*&p = p =&*p在C.我试过这段代码:

 #include <stdio.h>
 #include <stdlib.h>

 char a[] = "programming";
 char *ap = &a[4];  

int main(void)
{

 printf("%x %x %x\n", ap, &*(ap), *&(ap));   /* line 13 */
 printf("%x %x %x\n\n", ap+1, &*(ap+1), *&(ap+1));   /* line 14 */
}
Run Code Online (Sandbox Code Playgroud)

第一行printf(第13行)给我地址:

40b0a8 40b0a8 40b0a8

这与预期相同.但当我添加第二条printf线时,Borland抱怨道:

"first.c":E2027必须在第14行的函数main中获取存储单元的地址

我期待得到:

40b0a9 40b0a9 40b0a9.

似乎第14行的表达式*&(ap + 1)是罪魁祸首.我认为第14行的所有三个指针表达式都是等价的.为什么我错了?

第二个相关问题:该线

char *ap = a;
Run Code Online (Sandbox Code Playgroud)

指向数组a的第一个元素.我用了

char *ap = &a[4];  
Run Code Online (Sandbox Code Playgroud)

指向数组a的第5个元素.

是表达

char *ap = a;
Run Code Online (Sandbox Code Playgroud)

与表达相同

char *ap = &a[0];
Run Code Online (Sandbox Code Playgroud)

最后一个表达式是否比前一个表达式更冗长?

非常感谢...

c pointers memory-address

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

如何在C++中返回存储在特定内存地址中的变量的名称

在我从这个精彩的网站上获得了如此多的Google搜索结果之后,我第一次在这里发帖.

基本上,我想找到存储在特定内存地址的变量名称.我有一个编写的内存编辑应用程序编辑单个值,问题是每次修补应用程序保存此值时,我必须将新内存地址硬编码到我的应用程序中,并重新编译,这需要花费很多时间维持它几乎不值得做.

我想要做的是获取存储在某个内存地址的变量的名称,这样我就可以在运行时找到它的地址并将其用作要编辑的内存地址.

这都是用C++编写的.

提前致谢!

编辑:

好吧我已经决定要从.txt文件中流式传输数据了,但我不确定如何将字符串转换为LPVOID以用作WriteProcessMemory()中的内存地址.这就是我尝试过的:

    string fileContents;

    ifstream memFile("mem_address.txt");
        getline(memFile, fileContents);
    memFile.close();

    LPVOID memAddress = (LPVOID)fileContents.c_str();

    //Lots of code..

    WriteProcessMemory(WindowsProcessHandle, memAddress, &BytesToBeWrote, sizeof(BytesToBeWrote), &NumBytesWrote);
Run Code Online (Sandbox Code Playgroud)

代码在语法方面都是正确的,它编译和运行,但WriteProcessMemory错误,我只能想象它与我的错误的LPVOID变量有关.如果扩展我的问题的使用是违反规则,我道歉,如果是的话,我将删除我的编辑.

c++ windows variables memory-address

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

询问printf

当我们打印变量的地址时,哪个地址被打印?

如果是虚拟内存,为什么会这样呢?

任何人都可以解释一下......

memory printf memory-address

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

如何通过C中的套接字发送和接收内存地址?

我想通过C中的套接字发送/接收内存地址.我有以下内容:

void *ptr = malloc(122); /* So the pointer points to some valid address */
unsigned char *socketData = NULL;

socketData = (unsigned char*)malloc(sizeof(void*));
memset(socketData, 0, sizeof(void*));

/* ??? How to get the memory address - where ptr points to - to socketData ??? */
Run Code Online (Sandbox Code Playgroud)

我知道使用打印指针地址的方法printf是使用%p,即

printf("%p", ptr);
Run Code Online (Sandbox Code Playgroud)

但这打印例如0x0021ef1a.我想要的只是以下内容:0021ef1a

在接收方:如何将接收到的字节转换回void*

啊:代码应该适用于32位以及64位系统;)此外代码应该使用-Wall -Werror编译....呵呵

谢谢你的帮助!周末愉快,乔纳斯

c sockets void-pointers memory-address

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

需要获取结构与C中其中一个字段之间的偏移量

该主题的标题也可能是"size_t足以容纳地址吗?"

我正在尝试获取结构与其中一个字段之间的偏移量,并且我使用size_t变量来保存偏移量:

size_t offset = (size_t)&struct.field - (size_t)&struct;
Run Code Online (Sandbox Code Playgroud)

我知道这有点强迫,我只是想知道我是否会因此而遇到某种错误.我知道我可以使用int做同样的事情,但我想知道它是否可以在64位系统上保存地址.

你对此有何看法?

c struct field offset memory-address

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

指针 - 查询

#include <stdio.h>
#include <stdlib.h>

int main( void ) {
   char *ptr1 = "Hello World\n";
   char *ptr2;

   ptr2 = ptr1 + 6;
   ptr2 = "Test!\n";

   printf("%s",ptr2);
   printf("%s",ptr1);

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

输出:

Test!
Hello World
Run Code Online (Sandbox Code Playgroud)

为什么我没有Hello Test!?我以为id会覆盖World-part ptr1.

c pointers memory-address

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

在C++中获取类对象的地址?

假设我有一个C++类,如下所示:

class Point {
// implementing some operations
}
Run Code Online (Sandbox Code Playgroud)

然后:

Point p1;
Point p2 = p1;
Run Code Online (Sandbox Code Playgroud)

如果我想知道p2的地址,那么我可以使用&p2.但是如何获得p2存储的地址?因为p2不是指针,所以我不能只使用cout << p2;

c++ memory-address

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

从派生对象获取基础对象的地址

我的程序中出现了一个非常令人困惑的错误.我想我可能有两个同一类的不同对象,我认为我有相同的对象.这很令人困惑,因为我正在处理一个非常大的框架,在这个框架中获取指向我需要的对象的指针并不简单.

我的问题是,如果我有一个继承自Base的Derived类,并且我有一个指向Derived对象的指针,我怎样才能从派生对象中获取Base对象的地址?我正在使用基类的源代码,并在Base中打印出"this"的地址.在我的代码的另一部分中,检索指向Derived的指针.我需要能够通过Derived对象打印Base对象的地址,以确定我是否有指向我需要的特定Derived对象的指针.

我可能对地址如何在继承中使用C++有很大的误解.也许它们只是一个对象,而不是链接到派生对象的基础对象?

非常感谢你

编辑:我想这样做的原因纯粹是为了调试.问题是我使用的代码库不包含很多接口或受保护的成员,所以我不得不编辑源代码来访问某些信息.但是,当我调用我使用特定的Derived指针添加到Base类的方法时,我的程序崩溃了.我需要能够在这种情况下打印基础对象的地址,以便我可以确定这是否是正确的对象或我是否收到此错误,因为我实际上有一个指向错误对象的指针.我意识到我可以将代码添加到派生类中以使其打印其地址,但我只是想知道是否有可能在不编辑源代码的情况下获取地址.谢谢

c++ pointers derived base memory-address

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

是否有一个python模块,可以将地理坐标转换为相应城市的名称?

我有一堆坐标,我想将它们转换为人类可读的地址.有没有办法实现这个目标?如果我能得到坐标所在城市名称,那就太好了.

python geolocation city reverse-geocoding street-address

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