サンプル集 |
■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