标签: memory-address

64位地址

我编译了64位Windows操作系统的应用程序.应用程序应保存64位地址,我必须决定变量类型,以保存它们.我想长期保存它们.但是sizeof(long) == 4.我在哪里以及如何保存地址

c c++ 64-bit memory-address visual-studio

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

C++:用于循环打印地址的数组而不是值

这是我们在课堂上给出的一个例子.有人可以向我解释为什么打印29个地址而不是29"0"(零)?

int num[29]; 是一个为29个整数留出29个地址的数组 - 我得到那个部分,但是在for循环中你不打印那些地址而不是地址本身的值吗?

还有,(num+i)和之间的区别是(num[]+i)什么?

我有点困惑..

#include <iostream>
#include <cmath>

using namespace std;

int main(){
    int  num[29];
    for (int i=0;i<29;i++)
        cout << (num+i) << endl;

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

c++ arrays for-loop memory-address

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

为我的对象分配特定/显式内存位置

我可以在C++中使用明确指定其内存地址的对象吗?这是因为我为每个实体(对象)分别设置了id.因此,如果我能做到这一点,我将能够通过仅添加指针来遍历所有对象.考虑一下:我有一个内存位置为x的对象.我想用内存位置x +(下一个对象的唯一id)创建下一个对象*K其中K是两个对象之间的恒定间隙(比方说)

c++ pointers memory-address

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

指针地址跨越各种平台

在C中编码时的常见情况是编写返回指针的函数.如果在运行期间写入函数内发生某些错误,NULL可能会返回以指示错误.NULL只是特殊的内存地址0x0,除了表示特殊条件的出现之外,它从不用于任何东西.

我的问题是,是否有任何其他特殊的内存地址永远不会用于用户态应用程序数据?

我想知道这个的原因是因为它可以有效地用于错误处理.考虑一下:

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

#define ERROR_NULL 0x0
#define ERROR_ZERO 0x1

int *example(int *a) {
    if (*a < 0)
        return ERROR_NULL;
    if (*a == 0)
        return (void *) ERROR_ZERO;
    return a;
}

int main(int argc, char **argv) {
    if (argc != 2) return -1;
    int *result;
    int a = atoi(argv[1]);
    switch ((int) (result = example(&a))) {
        case ERROR_NULL:
            printf("Below zero!\n");
            break;

        case ERROR_ZERO:
            printf("Is zero!\n");
            break;

        default:
            printf("Is %d!\n", *result);
            break;
    }
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c error-handling pointers void-pointers memory-address

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

指向存储的特定内存地址的指针

我在txt文件中有内存位置地址.我想从文件中读取地址并使用存储在该地址的值.这就是我所做的:

char line[10];
FILE *f;
f=fopen("p:\\address.txt", "r");
fgets(line,10,f);
Run Code Online (Sandbox Code Playgroud)

该文件包含地址0x12ff30.我已将其存储在char数组行中.地址包含一个double值(来自0x12ff30的8个字节).现在如何创建和使用指针来获取存储在该地址的值?

谢谢.

c pointers memory-address

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

如果我知道它的地址,我可以以某种方式访问​​一个值吗?

说我们有一个变量

    int var = 3000;
    int *pt;
    pt=2293572; //where &var=2293572
Run Code Online (Sandbox Code Playgroud)

通过了解内存地址,问题基本上是间接访问存储在内存位置的值? 如果不是在c,cpp我们可以使用其他语言吗?

c c++ pointers memory-address

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

在C++中,我收到一条消息"错误:'void*'不是指向对象的指针类型"

这是我的代码:

#include <iostream>
using namespace std;

int main()
{
   void *x;
   int arr[10];
   x = arr;
   *x = 23; //This is where I get the error
}
Run Code Online (Sandbox Code Playgroud)

如您所见,代码非常简单.它只是创建一个void指针x,它指向数组'arr'的内存地址,并将整数23放入该内存地址.但是当我编译它时,我收到错误消息"'void*'不是指向对象的指针类型".当我使用'int'指针而不是void指针然后编译它时,我没有得到任何错误或警告.我想知道为什么我会收到这个错误.

谢谢.

c++ compiler-errors codeblocks void-pointers memory-address

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

'&buf_pool-> watch [0]'的语法含义是什么?

我在buf0buf.cc这里读了mysql的innodb缓冲区源代码的代码:

从git hub链接

我得到了这个:

&buf_pool->watch[0]

声明的价值是什么?地址?或其他价值?

代码是什么意思?(语法含义)

c++ pointers memory-address

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

C数组到指针

请解释为什么下面的代码失败了line 10.如何打印p,即Hello World.

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
    char ar[200] = "Hello World";
    strcat(ar, " !");
    printf("%s\n", ar);

    char **p = &ar;
    printf("%s\n", *p[0]);

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

编辑:

只是为了澄清我想要实现的目标.我有一个接受char**作为参数的函数,因此我想转换char ar[200]char**,但应用程序冻结.

c arrays pointers memory-address dereference

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

如果变量a是char数组,则char*p =&C++中定义的行为

我一直以为:

char a[10];
char* p = &a;
Run Code Online (Sandbox Code Playgroud)

是错的,它应该是以下之一:

char a[10];
char* p = a; // OR
char* p = &a[0];
Run Code Online (Sandbox Code Playgroud)

我希望我能找到这里的主题,所以我正在阅读说p =&a; 是有效的,它是关于C语言,而不是C++.

我一直在想,显然:

char* p = new char[10];
char* p1 = &p; // Is wrong
Run Code Online (Sandbox Code Playgroud)

但是,当一个数组在堆栈空间为本地创造了它似乎是合理的我的直觉a,&a&a[0]都是相同的值/地址.我不得不说,我一直在关注C++并且没有看到它以这种方式完成,这就是为什么当我开始研究CI时很快将其称为错误,但我确信它不在C中(很好地验证)在那将是赞赏).我只是想知道C++中的情况是否也是如此,因为据我所知,在C++中通常会采用其他两种方式中的一种,这种方式(如果我的想象力不是耍花招)似乎是用C语言完成的.

编辑:这是一个非常愚蠢的问题.我的困惑来自于我的Visual Studio编译器在C中编译它,但不是在C++中编译,所以我认为在这方面语言有所不同.我不会删除这个问题,因为它已经有了答案.

c c++ arrays memory-address

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