前提・実現したいこと
C言語で書かれたPC上のアドレス番号を確認するコードが理解できずに困っています。
以下のソースコードをコンパイルし、実行したところ、エラーなどは表示されませんでした。
しかし、元のコードが何を要求して、何が返されているのかわからないため、
教えていただけますと幸いです。
該当のソースコード
c
1#include <stdio.h> 2#include <stdlib.h> 3 4int globalA = 317; 5 6void indent(int d) 7{ 8 for ( ; d ; d-- ) 9 printf(" "); 10} 11 12void f(int localA, int originalDepth) 13{ 14 if (localA) { 15 indent(originalDepth - localA); printf("Inside function f()\n"); 16 indent(originalDepth - localA); printf("local A: %d pointer to local A: %p\n",localA,&localA); 17 f(localA-1, originalDepth); 18 indent(originalDepth - localA); printf("exiting f()\n"); 19 } 20} 21 22int main(int argc, char **argv) 23{ 24 printf("Pointer to function main(): %p\n", main); 25 printf("global A: %d pointer to global A: %p\n",globalA,&globalA); 26 printf("Pointer to function f(): %p\n", f); 27 printf("Pointer to function printf(): %p\n", printf); 28 f(10,10); 29 exit(0); 30}
実行結果(アドレス番号は変更してあります)
./a.out Pointer to function main(): 0x1080faaaa global A: 317 pointer to global A: 0x1080faaaa Pointer to function f(): 0x1080aaaaa Pointer to function printf(): 0x7fff6d8faaaa Inside function f() local A: 10 pointer to local A: 0x7ffee7baaaa Inside function f() local A: 9 pointer to local A: 0x7ffee7baaab Inside function f() local A: 8 pointer to local A: 0x7ffee7baaac Inside function f() local A: 7 pointer to local A: 0x7ffee7baaad Inside function f() local A: 6 pointer to local A: 0x7ffee7baaae Inside function f() local A: 5 pointer to local A: 0x7ffee7baaaf Inside function f() local A: 4 pointer to local A: 0x7ffee7baaa1 Inside function f() local A: 3 pointer to local A: 0x7ffee7baaa2 Inside function f() local A: 2 pointer to local A: 0x7ffee7baaa3 Inside function f() local A: 1 pointer to local A: 0x7ffee7baaa4 exiting f() exiting f() exiting f() exiting f() exiting f() exiting f() exiting f() exiting f() exiting f() exiting f()
補足情報(FW/ツールのバージョンなど)
MacOS High Sierra
ターミナル バージョン2.8.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。