ネットワーク・プログラミング Cプログラミングの基礎.

Slides:



Advertisements
Similar presentations
1 データ構造とアルゴリズム 第 3 回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
Advertisements

復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
情報処理演習C2 ファイル操作について (2).
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
データ構造とアルゴリズム 第10回 mallocとfree
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
12: コマンドライン引数 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
第8回 プログラミングⅡ 第8回
アルゴリズムとデータ構造 2011年6月13日
構造体.
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
構造体 構造体, 構造体とポインタの組み合わせ,.
第10回 プログラミングⅡ 第10回
C言語講座 第3回 ポインタ、配列.
プログラミング論 関数ポインタ と 応用(qsort)
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング 4 記憶の割り付け.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
プログラミング入門2 第8回 ポインタ 情報工学科 篠埜 功.
ネットワークプログラミング 第3回「C言語の基礎~コマンドライン引数・構造体・ポインタ」
プログラミング 3 構造体(2).
プログラミング入門2 第11回 情報工学科 篠埜 功.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
第13章 文字の取り扱い方 13.1 文字と文字型関数 13.2 文字列 13.3 文字型配列への文字列の代入
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 プログラミングⅡ 第7回
第11回 プログラミングⅡ 第11回
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
プログラミング基礎B 文字列の扱い.
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
C言語 はじめに 2016年 吉田研究室.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
データ構造とアルゴリズム 第11回 リスト構造(1)
プログラミング入門2 第9回 ポインタ 情報工学科 篠埜 功.
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
ポインタとポインタを用いた関数定義.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとデータ構造1 2009年6月15日
ネットワーク・プログラミング デバイスドライバと環境変数.
高度プログラミング演習 (11).
プログラミング論 構造体
ネットワーク・プログラミング Linuxシステムとソフトウェア開発.
プログラミング 4 文字列.
アルゴリズムとデータ構造 2010年6月17日
ネットワーク・プログラミング 1対多のプロセス間通信.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
情報処理Ⅱ 2005年11月25日(金).
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング演習II 2003年11月19日(第6回) 木村巌.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
マスク合成(のような処理) 出力画像 Out 入力画像1 In1 In1 In2 Out 入力画像2 In
左右反転と180度回転 [0][xsize – 1] [0][0] → i ↓ j [ysize – 1][xsize – 1]
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
12: コマンドライン引数 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

ネットワーク・プログラミング Cプログラミングの基礎

Cプログラミングの基礎 1.1 ポインタ変数を理解する アスタリスク *pは、pがポインタ変数であることを表す。 ポインタ変数には、アドレスが入る。&aは変数aのアドレスを表す。 *pはpが指すアドレスの中身を表す。 #include <stdlib.h> int main() { int a, b; int *p; a=100; p=&a; b=*p; return EXIT_SUCCESS; } アンパサンド 矢印は、変数pの中身が変数aのアドレスであることを表す メモリ 番地 メモリ内容 a 1232 b 2010 p 425 100 1232 メモリ内容はメモリ番地

1.2 ポインタ変数の大きさ p1は、文字型変数を指し示すポインタ変数。 p2は、整数型変数を指し示すポインタ変数。 1.2 ポインタ変数の大きさ p1は、文字型変数を指し示すポインタ変数。 p2は、整数型変数を指し示すポインタ変数。 p3は、浮動小数点型変数を指し示すポインタ変数。 char data1, *p1; int data2, *p2; double data3, *p3; p1=&data1; p2=&data2; p3=&data3; data1の内容が格納されているメモリ番地 4byte p1 p2 p3 1byte data1 data2 4byte data3 8byte

1.3 配列とポインタ p=aとすると、ポインタ変数pに配列aの先頭アドレスが入る。 1.3 配列とポインタ p=aとすると、ポインタ変数pに配列aの先頭アドレスが入る。 p++すると、ポインタ変数pに配列の次の要素のアドレスが入る。 int a[10]; int *p; p=a; *p=100; p++; *p=101; 4byte a[0] a[1] a[9] 100 101 p : : p++を実行すると、pは配列の次の要素を指し示す

1.4.1 構造体 kiteiという構造体の型(テンプレート)を定義する。 k_dataは、kitei型の変数。 1.4.1 構造体 kiteiという構造体の型(テンプレート)を定義する。 k_dataは、kitei型の変数。 構造体にデータを代入する。変数名(k_data)と構造体のメンバ(rank)の間にドット(.)が入る。 struct kitei { char rank; int shoukin; }; struct kitei k_data; k_data.rank=‘a’; k_data.shoukin=50; k_data. a k_dataにデータを代入した結果 rank 50 shoukin

k_data[9]にデータは代入されていない 1.4.2 構造体の配列 構造体を指すポインタ変数。 ptrに配列k_dataの最初の要素のアドレスを入れる。 ポインタ変数ptrを使って構造体のメンバを指定するには、ptrとメンバ名の間に矢印(->)が入る。 ptrは次の要素(k_data[1])を指し示す。 struct kitei { char rank; int shoukin; }; struct kitei k_data[10]; struct kitei *ptr; ptr=k_data; ptr->rank=‘a’; ptr->shoukin=50; ptr++; ptr->rank=‘b’; ptr->shoukin=40; ptr k_data[9]にデータは代入されていない k_data[0]にデータを代入した結果 k_data[9] k_data[0] k_data[1] a b : rank rank rank 50 40 shoukin shoukin shoukin

1.4.3 ポインタ変数をメンバに含む構造体 NULL キーボードからの入力がメンバs_dataに入る。 1.4.3 ポインタ変数をメンバに含む構造体 int i; struct s_list{ int s_data; struct s_list *ptr; }; struct s_list youso[10]; struct s_list *curr, *head, *w_ptr; curr=head=w_ptr=youso; for (i=0; i<10; i++) { if (scanf(“%d”,&w_ptr->s_data)==EOF) break; curr=w_ptr; curr->ptr=++w_ptr; } curr->ptr=NULL; キーボードからの入力がメンバs_dataに入る。 「=++」は。インクリメントしてから代入する。 head curr w_ptr 線形リスト youso[0] youso[1] youso[2] youso[9] NULL :

宿題2 宿題(プログラムshoukin.c) レポートの締切は次の週の水曜日18:00 表紙に氏名と学籍番号を書く プログラムをemacsで打ち込み、実行結果を報告 VMwarePlayerからubuntuを立ち上げる   (或いは、TeraTermでipcs.bene.fit.ac.jpにログイン) emacsを使って、shoukin.cを入力 コンパイル: gcc -o shoukin shoukin.c 実行: ./shoukin 実施した内容を説明する文章を書く レポートはWordを使って書く レポートの締切は次の週の水曜日18:00

まとめ C言語 ポインタ変数 線形リスト