10

私はCの初心者なので、これはばかげた質問かもしれません、警告です!

誰かが文脈について疑問に思っているなら、それはLearn C theHardWayの演習16の追加のクレジットセクションに触発されています。

これらの輸入を想定すると:

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

そして、このような単純な構造体が与えられます:

struct Point {
    int x;
    int y;
};

ヒープ上にインスタンスを作成すると、次のようになります。

struct Point *center = malloc(sizeof(Point));
assert(center != NULL);
center->x = 0;
center->y = 0;

次に、次のようにメモリ内の構造体の場所を印刷できることがわかります。

printf("Location: %p\n", (void*)center);

しかし、スタック上に作成するとどうなりますか?

struct Point offCenter = { 1, 1 };

スタックにある値は、まだメモリ内のどこかにあります。では、どうすればその情報を入手できますか?新しいon-the-stack-structへのポインターを作成し、それを使用する必要がありますか?

編集:おっと、それは少し明白なものだったと思います。ダニエルとクリフォードに感謝します!完全を期すために、以下を使用した印刷例を示し&ます。

printf("Location: %p\n", (void*)&center);
4

1 に答える 1

13

「address-of」演算子を使用して単項&

struct Point offCenter = { 1, 1 };
struct Point* offCentreAddress = &offCentre ;
于 2012-06-24T18:44:28.270 に答える