今、12/31午前6時:例によって年末猛ダッシュ、今朝はC言語の復讐になりました。
なんで、いつもいつも年末研究関連でガンバルことになるのか?不思議です。
年末メモ
12/29:両親が墓参りをしたいというので連れて行く(我孫子、取手、守谷)。
12/30:雨、C++プログラム作成(卒業できない学生が出ては可哀そう、とサポートプログラムを作成、だいぶC++のカンが戻ってくる)。
12/31:これから、実家の大掃除。
よいお年を!
備忘メモ
(1)VC++で標準出力を出すには「デバッグ」ではなく「Ctrl_F5」で実行。
(2)Javaのポインターレスの世界で気持ち良く暮らしていましたが、最後の最後またポインターと付き合うはめになり、復習しました。
*********************** 関数でmainをいじる(副作用)
===(プログラム1) #include <stdio.h>
void func(int *pv) {
printf(“pv = %p\n”,pv);
*pv = 100;
return;
}
int main(void){
int v = 10;
func(&v);
printf(“v = %d\n”,v);
return 0;
}
===(プログラム2)
#include <stdio.h>
int getaverage(int *data){
int i,average = 0;
for (i = 0;i < 3;i++) {
average += data[i];
}
data[0]=100;
return average / 3;
}
int main(void){
int average,array[3] = {0,10,20};
average = getaverage(array);
printf(“%d\n”,average);
printf(“%d\n”,array[0]);
return 0;
}
===(プログラム3)
#include <stdio.h>
void func(int a[]){
int x = a[0];
a[2] = x + 10;
}
void main(void){
int data[3]={1,2,3};
func(data);
printf(“%d\n”,data[2]);
return;
}
====(プログラム4)
void func(int a[][5],int b[][5]){
a[2][2]=b[2][2];
}
int main(void) {
int a[5][5],b[5][5];
a[2][2]=10;
b[2][2]=100;
func(a,b);
printf(“%d\n”,a[2][2]);
return 0;
}
********* ポインターと配列の関係復習(data[1]と*(data + 1)は同じって話)
===(プログラム5)ネットにあったものを大体使わせてもらいました
#include <stdio.h>
int main(void) {
int *data;
int i,sum = 0,array[3] = {1,2,3};
data = array; /* ポインタ変数に配列のアドレスを代入 */
for (i = 0;i < 3;i++) {
sum += data[i]; /* 配列のように計算 */
}
printf(“%d\n”,sum);
return 0;
}
===(プログラム6)上と同じ
#include <stdio.h>
int main(void) {
int *data;
int i,sum = 0,array[3] = {1,2,3};
data = array;
for (i = 0;i < 3;i++) {
sum += *(data + i); /* ポインタ演算 */
}
printf(“%d\n”,sum);
return 0;
}
****************************