• Tidak ada hasil yang ditemukan

動的変数と静的変数の初期値

N/A
N/A
Protected

Academic year: 2024

Membagikan "動的変数と静的変数の初期値"

Copied!
4
0
0

Teks penuh

(1)

プログラミング論

ファイル入出力

http://www.ns.kogakuin.ac.jp/~ct13140/ProgC/

概要

動的変数と静的変数の初期値

簡単

実引数と仮引数,値渡しと参照渡し

本当はものすごく難しいが,本日は簡単.

詳細は プログラミング3 の ポインタ にて

ファイル処理

難しくないが,面倒? 慣れが必要

D-2

動的変数と静的変数の初期値

void main() { int x, y, z;

printf("%d\n", x);

printf("%d\n", y);

printf("%d\n", z);

} 実行結果 32767 0 0

↑ゴミが入っている (gcc & Linuxで実行)

int x, y, z;

void main() { printf("%d\n", x);

printf("%d\n", y);

printf("%d\n", z);

} 実行結果 0 0 0

↑0クリアされている

グローバル変数,静的(static)変数は,自動的に0で初期化される.

staticでないローカル変数は,初期化されずゴミが入っている.

D-3

動的変数と静的変数の初期値

void main() { int x, y, z;

printf("%d\n", x);

printf("%d\n", y);

printf("%d\n", z);

}

Uninitialized variable 'x' used

初期化されていないローカル変数xが使用されています

↑実行できな

(Visual Studio 2015で実行)

グローバル変数,静的(static)変数は,自動的に0で初期化される.

staticでないローカル変数は,初期化されずゴミが入っている.

D-4

動的変数と静的変数の初期値

void main() { int x[3];

printf("%d\n", x[0]);

printf("%d\n", x[1]);

printf("%d\n", x[2]);

} 実行結果 -858993460 -858993460 -858993460

↑ゴミが入っている

Visual Studioでも実行可能

void main() {

static int x[3];

printf("%d\n", x[0]);

printf("%d\n", x[1]);

printf("%d\n", x[2]);

} 実行結果 0 0 0

↑0クリアされている

グローバル変数,静的(static)変数は,自動的に0で初期化される.

staticでないローカル変数は,初期化されずゴミが入っている.

D-5

実引数 と 仮引数 値渡し と 参照渡し

関数の仮引数と実引数

(

値渡し

)

void func(int a){

a = 7;

}

void main(){

int x = 3;

func(x);

printf("%d\n", x);

}

100 番地

3 x

D-7

void func(int a){

a = 7;

}

void main(){

int x = 3;

func(x);

printf("%d\n", x);

}

100 番地

3 x

関数の仮引数と実引数

(

値渡し

)

D-8

(2)

関数の仮引数と実引数(値渡し)

void func(int a){

a = 7;

}

void main(){

int x = 3;

func(x);

printf("%d\n", x);

}

100 番地

3 x

104 番地

3 a

別のメモリに割り当てられた 別の変数

D-9

関数の仮引数と実引数(値渡し)

void func(int a){

a = 7;

}

void main(){

int x = 3;

func(x);

printf("%d\n", x);

}

100 番地

3 x

104 番地

7 a

別のメモリに割り当てられた 別の変数

D-10

関数の仮引数と実引数

(

値渡し

)

void func(int a){

a = 7;

}

void main(){

int x = 3;

func(x);

printf("%d\n", x);

}

3

実行結果

100 番地

3 x

D-11

関数の仮引数と実引数

(

値渡し

)

void func(int x){

x = 7;

}

void main(){

int x = 3;

func(x);

printf("%d\n", x);

}

3

実行結果

この2個を 同じ名前にしても 結果は変わらない.

100 番地

3 x

104 番地

3 x

別のメモリに割り当てられた 別の変数

D-12

関数の仮引数と実引数

(

参照渡し

)

void func(int a[2]){

a[0]=3;

}

void main(){

int x[2];

x[0]=10; x[1]=20;

func(x);

printf("%d %d\n", x[0], x[1]);

}

100 番地

10 X[]

104 番地

20 X[1]

X[0]

D-13

関数の仮引数と実引数

(

参照渡し

)

void func(int a[2]){

a[0]=3;

}

void main(){

int x[2];

x[0]=10; x[1]=20;

func(x);

printf("%d %d\n", x[0], x[1]);

}

100 番地

10 X[]

104 番地

20 X[1]

X[0]

D-14

関数の仮引数と実引数

(

参照渡し

)

void func(int a[2]){

a[0]=3;

}

void main(){

int x[2];

x[0]=10; x[1]=20;

func(x);

printf("%d %d\n", x[0], x[1]);

}

100 番地

10 X[]

104 番地

20 X[1]

X[0]

a[]

a[1]

a[0]

D-15

関数の仮引数と実引数

(

参照渡し

)

void func(int a[2]){

a[0]=3;

}

void main(){

int x[2];

x[0]=10; x[1]=20;

func(x);

printf("%d %d\n", x[0], x[1]);

}

100 番地

3 X[]

104 番地

20 X[1]

X[0]

a[]

a[1]

a[0]

D-16

(3)

関数の仮引数と実引数(参照渡し)

void func(int a[2]){

a[0]=3;

}

void main(){

int x[2];

x[0]=10; x[1]=20;

func(x);

printf("%d %d\n", x[0], x[1]);

}

100 番地

3 X[]

104 番地

20 X[0] X[1]

3 20

実行結果

D-17

ファイル処理

(

入門編

)

ファイルを開く

(a)

fopen("ファイル名", "モード");

戻り値: 成功したらファイルへのポインタ,

失敗したら

NULL.

使用例

FILE *fp;

fp = fopen("s:\\a.txt", "rt");

if( fp == NULL ){

perror("ファイルを開けません.");

}

D-19

ファイル処理例

0a

#include <stdio.h> // fopenやNULLなどに必要

#include <stdlib.h> // exit()に必要

int main() {

FILE *fp;

fp = fopen("S:\\a.txt", "wt");

if ( fp == NULL ) {

perror("ファイルを開けません");

exit(1);

}

fprintf( fp, "Hello, World!\n");

fclose(fp);

return 0;

}

ファイルポインタ変数 fpを宣言.

FILE *型のfpという名の変数

fopenでファイルを開く.

以後,変数fpが そのファイルを象徴

fcloseで ファイルを閉じる.

fpが象徴する ファイルにprintf

Open成功なら 非NULL.

失敗ならNULL

D-20

ファイルを開く

(b)

fopen_s(&fp, "ファイル名", "モード");

戻り値: 成功したら0. 失敗したら0以外.

使用例

FILE *fp;

int ret;

ret = fopen_s(&fp, "s:\\a.txt", "rt");

if( ret != 0 ){

perror("ファイルを開けません.");

}

D-21

ファイル処理例

0b

#include "stdafx.h"

#include <stdlib.h> // exit()に必要

int main() {

FILE *fp;

int ret;

ret = fopen_s( &fp, "S:\\a.txt", "wt");

if ( ret != 0 ) {

perror("ファイルを開けません");

exit(1);

}

fprintf(fp, "Hello, World!\n");

fclose(fp);

return 0;

}

D-22

fgetc (1/2)

• int fgetc(FILE *fp);

ファイル

fp

から

1

文字読み込む.

戻り値:

正常時 読み込んだ文字の文字コード 失敗時

-1

例えば,ファイルの終端に至り これ以上読み込め ない状況で

fgetc

を行うと,失敗となる.

D-23

fgetc (2/2)

int ret;

ret = fgetc( fp );

if( ret == -1 ){

perror("ファイル読み込み失敗.");

exit(1);

} else {

printf("文字=%c ",ret);

printf("文字コード=%d\n", ret);

}

D-24

(4)

ファイル処理例

1

#include "stdafx.h"

#include <stdlib.h>

int main() {

int ret, ch;

FILE *fp;

ret = fopen_s(&fp, "S:\\a.txt", "rt");

if( ret != 0) {

perror("ファイルを開けません");

exit(1);

}

while( (ch = fgetc(fp)) != -1 ){

printf("(%c,%d)\n", ch, ch);

}

fclose(fp);

return 0;

}

D-25

ファイル処理例

1

実行結果 (H,72) (e,101) (l,108) (l,108) (o,111) (,,44) ( ,10) (W,87) (o,111) (r,114) (l,108) (d,100) (!,33)

"S:\a.txt"

Hello, World!

D-26

ファイル処理例

2

#include "stdafx.h"

#include <stdlib.h>

int main(){

int ret, ch, cnt = 0;

FILE *fp;

ret = fopen_s(&fp, "S:\\a.txt", "rt");

if (ret != 0) {

perror("ファイルを開けません");

exit(1);

}

while( (ch = fgetc(fp)) != -1 ) { if( ch == 'o' ){ //文字aの文字コードは'a'

cnt++;

} }

fclose(fp);

printf("o は %d個ありました.\n", cnt);

return 0;

}

D-27

ファイル処理例

2

実行結果

o は 2個ありました.

"S:\a.txt"

Hello, World!

D-28

良くある短縮表記

fp = fopen("S:\\a.txt", "wt");

if( fp == NULL ){

if( (fp=fopen("S:\\a.txt","wt")) == NULL ) {

ret = fopen_s(&fp, "S:\\a.txt", "rt");

if( ret != 0){

if( (fopen_s(&fp,"S:\\a.txt","rt")) != 0 ){

D-29

Referensi

Dokumen terkait

はじめに 花は儚い(はかない)ものの象徴にもなっているが, 仕方なくしおれているのではなく,自ら進んでしおれて いく.そもそも花は種子を作るための器官である.ヒト が見て美しいと思う花の多くは,昆虫を引き寄せて受粉 を成功させるために,多種多様に進化したものである. 受粉が成功した後,あるいは受粉しなくても咲いてから

11, 2012 785 今日の話題 生じる可能性も予想される.上記の作用とは異なって, リノール酸不飽和化律速酵素 (Δ6 desaturase) 活性は, 一般にコレステロールの摂取によって低下するが,酸化 コレステロールを摂取した場合には活性が上昇する(6). Δ6 Desaturase はリノール酸からアラキドン酸に代謝さ

2 度と無意識の自己像が示されると考えられている投影法心理照テストであるバ ウムテスト、感情状態を把握するためのうつ尺度(SDS)と不安尺度(STAI) を実施してその関連を調べた。その上で特徴的な事例について成育歴を詳細に 分析するために交流分析理論の脚本分析を半構造化面接で行った。 第 3 章 研究 研究1

1 要旨 要介護高齢者が街路を歩行する際に心拍数が変化する状況とはどのような状況なのか, 何が「バリア」と成り得る状況なのか,Global Positioning System(以下GPS)を使用し て位置を把握し,その位置の状況を詳細に検証した.T 市介護施設利用の要介護高齢者 5 名(男性2名,女性3名)を対象者とした.あらかじめ,歩行ルートを検討し,基本項目

一尺V係数規準による数値的検討一 森裕 岡山理科大学総合,情報学部社会情報学科 (1998年10月5日受理) 1.はじめに 主成分分析や因子分析を用いて,少ない次元でデータの隠された特徴までを測りとれる ような指標を作ることを考える。妥当性の高い指標を得ようとすると,調査にはできるだ

研究目的 昭和初期凶作中の気象が凶作にどう影響したか、詳しく述べられていない。 〇先行研究②について 4/16 凶作 歴史 凶作 歴史 気象 当時の気象が昭和初期大凶作に与えた影響を明らかにすることで 気象と歴史の関係を繋ぐ →互いの更なる発展に繋がるのではないか 〇2つの先行研究を受けて 15 年間 を通じて

B 積分の平均値の定理の有用性 例題3.7の計算のように,平均µ:= b a1 Rb a fxdxが 求めやすい関数f とa, bで定符号の関数gの積f gの積分Rb afxgxdxを, よりやさ しいgのみの積分µRb agxdxに帰着できることなど... *fX, Yを2変数X, Y の有理関数とし,R fgx,

コルモゴロフはこのことを反省し,確率論を真の「ランダムな現象を解析する数 学」として完成するために「 ω が Ω から選ばれる手順」について考察することに した.そして,それがランダムであるとはどういうことか,を明らかにした. 3 Ωが有限集合の場合を考えよう.元の個数#Ωだけが本質的なので,どのような