天国にいけるC言語入門 ヘキサ構造体 ver5.2130
参照渡し(ポインタ渡し)が行われるときの自作関数の構造を分析してみましょう そのために自作関数の部分をmain関数の中で元の命令文の集まりに戻してみます
ですので変数aのアドレスに格納されている数値を表す*ptxをつかい変数aのアドレスに格納されている数値を変更することができます
参照渡し(ポインタ渡し)が行われるときの自作関数の構造を分析してみましょう そのために自作関数の部分をmain関数の中で元の命令文の集まりに戻してみます
アレサ
「ソーラーさん、
自作関数を実行して
main関数内で定義された変数aに
格納されている数値を変更するために
自作関数の定義に参照渡し(ポインタ渡し)をつかったプログラムを構成できました。
大成功ですね
#include <stdio.h>
void newmadefunction(int* ptx)
{
*ptx=*ptx+5;
printf("%d\n",*ptx);
}
int main (void){
int a=1;
newmadefunction(&a);
printf("%d\n",a);
return 0;
}
コンパイル結果
6
6
ソーラー「アレサ、試しに
このプログラムを自作関数をつかわない
プログラムに変更とかできるのかな?😊」
アレサ「?
もちろんできますとも😊
そもそも自作関数とは
🍎本来main関数内で記述されていたプログラムを🍎
🍎 まとめただけなのですの 🍎
ですから
今の自作関数の定義に参照渡し(ポインタ渡し)をつかったプログラム
👇
#include <stdio.h>
void newmadefunction(int* ptx)
{
*ptx=*ptx+5;
printf("%d\n",*ptx);
}
int main (void){
int a=1;
newmadefunction(&a);
printf("%d\n",a);
return 0;
}
コンパイル結果
6
6
は
自作関数の定義を消し
main関数内の
newmadefunction(&a);
の命令文を
自作関数の定義に沿って元に戻した
次のプログラムと全く等しくなります
#include <stdio.h>
int main (void){
int a=1;
int* ptx=&a;
*ptx=*ptx+5;
printf("%d\n",*ptx);
printf("%d\n",a);
return 0;
}
コンパイル結果
6
6
アレサ「
newmadefunction(&a);
と記述するだけで
int* ptx;
ptx=&a;
*ptx=*ptx+5;
printf("%d\n",*ptx);
に相当する命令文が実行されていたというわけですの(#^^#)」
ソーラー「なあるほどね
この自作関数を自作関数の定義に沿って
main関数内に戻したプログラムの
ポインタ変数宣言
int* ptx;
の部分
は自作関数の引数部分の()の中の
👇
void newmadefunction(int* ptx)
👆
int* ptx
に相当するんだね」
アレサ「そうなっているのですの🌞 🌞 🌞」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます