| サンプル集 |
|
■VC ■C# ■Java ■BorlandC ■LinuxC ■MS-DOS ■bash ■Excel VBA ■VBScript ■PHP ■HTML ■perl ■iPhone ■Android ■Lua ■other |
| Linuxコマンド |
| 用語集 |
| debian メモ |
| apache2 メモ |
| MySQL メモ |
| Oracle メモ |
| HOME |
構造体を使って値のやりとりをします。
◆環境| OS | 8.2 Linux TSV01 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux |
|---|---|
| gcc | 4.9.2 (Debian 4.9.2-10) |
以下の動作を確認します。
- main関数で構造体変数を定義
- 関数へ構造体変数を渡し、関数内で値を設定
| structTest.c | ||
|
makefileです。
| makefile | ||
|
makeします。
# make
/usr/bin/gcc -Wall -c structTest.c -g
/usr/bin/gcc -o structTest structTest.o
/usr/bin/gcc -Wall -c structTest.c -g
/usr/bin/gcc -o structTest structTest.o
実行します。
# ./structTest
main:addr:0x7ffc836ddc00
set :addr:0x7ffc836ddc00
dsp :addr:0x7ffc836ddbe0
Type=A Nmbr=1 Msg=[apple]
dsp2:addr:0x7ffc836ddc00
set :addr:0x7ffc836ddc00
dsp :addr:0x7ffc836ddbe0
Type=B Nmbr=2 Msg=[bread]
set :addr:0x7ffc836ddc00
dsp :addr:0x7ffc836ddbe0
Type=C Nmbr=3 Msg=[coffee]
main:addr:0x7ffc836ddc00
set :addr:0x7ffc836ddc00
dsp :addr:0x7ffc836ddbe0
Type=A Nmbr=1 Msg=[apple]
dsp2:addr:0x7ffc836ddc00
set :addr:0x7ffc836ddc00
dsp :addr:0x7ffc836ddbe0
Type=B Nmbr=2 Msg=[bread]
set :addr:0x7ffc836ddc00
dsp :addr:0x7ffc836ddbe0
Type=C Nmbr=3 Msg=[coffee]
期待通りに動きました。
main関数で宣言した構造体変数(以下、param)のアドレスは 0x7ffc836ddc00 です。 setParam関数に引き渡したときのアドレスも同じです。 そのため、setParam関数内で設定した値は paramの値を書き換えているものと考えられます。
dspParam関数の引数のアドレスは paramのものと違います。 これは dspParam関数へは paramのポインタを渡していないためだと思います。
Copyright (C) 2016 ymlib.com
