C () 14 5 23 C () C C C C C 1 Fortran Character*72 name Integer age Real income 3 1 C 1.1 3 7 mandata mandata () name age income mandata () mandata1 1
#include <string.h> struct mandata char name[51]; int age; float income; ; struct mandata mandata1; strcpy(mandata1.name,"shuichi Gunji"); mandata1.age = 39; mandata1.income = 100000.0; printf("name=%s\n",mandata1.name); printf("name=%d\n",mandata1.age); printf("income=%f\n",mandata1.income); struct mandata mandata1="shuichi Gunji",39,100000.0; mandata1 (p) mandata1 p #include <string.h> struct mandata char name[51]; int age; float income; ; struct mandata mandata1; struct mandata *p; p = &mandata1; strcpy(p->name,"shuichi Gunji"); p->age = 39; p->income = 100000.0; printf("name=%s\n",p->name); 2
printf("name=%d\n",p->age); printf("income=%f\n",p->income); p (*p).age *p.age *p.age *(p.age) (*) strcpy((*p).name,"shuichi Gunji"); (*p).age = 39; (*p).income = 100000.0; age p >age 1.2 #include <string.h> struct mandata char name[51]; int age; float income; ; void disp( struct mandata mandata1); struct mandata mandata1; strcpy(mandata1.name,"shuichi Gunji"); mandata1.age = 39; mandata1.income = 100000.0; disp(mandata1); void disp(struct mandata mandata1) 3
printf("name=%s\n",mandata1.name); printf("name=%d\n",mandata1.age); printf("income=%f\n",mandata1.income);... struct mandata disp( struct mandata mandata1);... mandata1=disp(mandata1); struct mandata disp(struct mandata mandata1)... mandata1.age =30; /* age */ return mandata1; /* mandata1 */ mandata1 *p 2 mandata1 p age #include <string.h> struct mandata char name[51]; int age; float income; ; void disp( struct mandata *p); struct mandata mandata1; struct mandata *p; p = &mandata1; strcpy(mandata1.name,"shuichi Gunji"); mandata1.age = 39; 4
mandata1.income = 100000.0; disp(p); printf("mandata.age= %d\n",mandata1.age); void disp(struct mandata *p) printf("name=%s\n",p->name); printf("age=%d\n",p->age); printf("income=%f\n",p->income); p->age = 30; 1.3 mandata struct mandata mandata1[3] 3 mandata1.age[0] mandata1[0].age 3 #include <string.h> struct mandata char name[51]; int age; float income; ; struct mandata mandata1[3]; strcpy(mandata1[0].name,"shuichi Gunji"); mandata1[0].age = 39; mandata1[0].income = 100000.0; strcpy(mandata1[1].name,"fuyuki Tokanai"); mandata1[1].age = 31; mandata1[1].income = 80000.0; strcpy(mandata1[2].name,"hirohisa Sakurai"); mandata1[2].age = 53; mandata1[2].income = 200000.0; printf("name=%s\n",mandata1[2].name); 5
printf("name=%d\n",mandata1[2].age); printf("name=%f\n",mandata1[2].income); mandata1 1 #include <string.h> struct mandata char name[51]; int age; float income; ; struct mandata mandata1[3]; struct mandata *p; p=mandata1; strcpy(p->name,"shuichi Gunji"); p->age = 39; p->income = 100000.0; strcpy((p+1)->name,"fuyuki Tokanai"); (p+1)->age = 31; (p+1)->income = 80000.0; strcpy((p+2)->name,"hirohisa Sakurai"); (p+2)->age = 53; (p+2)->income = 200000.0; printf("name=%s\n",mandata1[2].name); printf("age=%d\n",mandata1[2].age); printf("income=%f\n",mandata1[2].income); 1.4 6
#include <string.h> struct mandata char name [51]; int age; float income; ; void datin(struct mandata *p); void disp(struct mandata mdat[]); struct mandata mdat[3]; datin(mdat); disp(mdat); void datin(struct mandata *p) strcpy(p->name,"shuichi Gunji"); p->age=39; p->income=100000.0; void disp(struct mandata mdat[]) printf("name=%s\n",mdat[0].name); printf("age=%d\n",mdat[0].age); printf("income=%f\n",mdat[0].income); saimoku 3 mandata char int saimoku 2 2 #include <string.h> struct saimoku float income1; float income2; float income3; 7
; struct mandata char name [51]; int age; struct saimoku income; ; struct mandata mdat; struct mandata *pmdat; strcpy(mdat.name,"shuichi Gunji"); mdat.age= 39; mdat.income.income1=100000.0; mdat.income.income2=50000.0; mdat.income.income3=20000.0; pmdat = &mdat; printf("mdat.income.income1=%f\n",pmdat->income.income1); printf("mdat.income.income2=%f\n",pmdat->income.income2); printf("mdat.income.income3=%f\n",pmdat->income.income3); 2 #include <string.h> struct saimoku float income1; float income2; float income3; ; struct mandata char name [51]; int age; struct saimoku *pincome; ; struct mandata mdat; struct mandata *pmdat; struct saimoku temp; 8
pmdat = &mdat; mdat.pincome = &temp; /* */ strcpy(pmdat->name,"shuichi Gunji"); pmdat->age= 39; pmdat->pincome->income1=100000.0; pmdat->pincome->income2=50000.0; pmdat->pincome->income3=20000.0; printf("income1=%f\n",pmdat->pincome->income1); printf("income2=%f\n",pmdat->pincome->income2); printf("income3=%f\n",pmdat->pincome->income3); printf("mdat.pincome->income1=%f\n",mdat.pincome->income1); printf("mdat.pincome->income2=%f\n",mdat.pincome->income2); printf("mdat.pincome->income3=%f\n",mdat.pincome->income3); 2 disp disp main disp void disp(int i); int i=3; printf("i=%d\n",i); i=2; disp(i); disp disp disp disp stdio.h 9
2 printf void disp(int i) printf("i=%d\n",i); 2 sample1.c sample1-1.c sample1 kdeve% gcc -o sample1 sample1.c sample1-1.c 1. C stdio.h include 2. 2 2 sample1.c void disp(int i); int i=3; printf("i=%d\n",i); i=2; disp(i); sample1-1.c /* */ /**/ void disp(int i) printf(i,"i=%d\n"); /* */ disp indat 2 gunji.h 10
void disp(char dummy[]); void disp( char dummy[])... void indat(int i); void indat(int i)... gunji.h gunji.h include #include "gunji.h" int j=2; char temp[50]="abcd"; indat(j); disp(temp); 3 a main b disp c int c; void disp(void); 11
int a; void disp(void) int b; main a main a disp disp b int a,b,c; /**/ void disp(void); int a; /*main */ a=1; /* a */ b=2; /* b */ void disp(void) int b; /*disp b */ a=3; /* a */ b=4; /* b */ c=5; /* c */ 2 2 sample2.c sample2-1.c 2 2 global a extern extern int... /* sample2.c */ int global_a; void temp(void); 12
temp();... /* sample2-1.c */ extern int global_a; void temp(void)... extern global a sample2-1.c main sample2-1.c disp global a /* sample2.c */ int global_a; void temp(void); temp();... /* sample2-1.c */ void disp(void); void temp(void) extern int global_a;... void disp(void)... 2 A i B i 2 13
static /* sample2.c */ static int i; void temp(void); temp();... /* sample2-1.c */ static int i; void temp(void)... 4 main indat indat1 2 2 ( ) indat i 10 i i 10 i k indat1 2 i i 2 i i k 2 C int *indat(void); int *indat1(void); int *i,*k; 14
i=indat(); printf("i=%d\n",*i); k=indat1(); printf("i=%d\n",*i); int *indat() int dummy; int *p=&dummy; *p=10; return p; int *indat1() int dummy; int *p=&dummy; *p=2; return p; main 1. indat dummy p 2. 10 p main 3. p main indat dummy p 4. i 5. main indat1 indat1 dummy p C 15
5 printf("byte of int =%d\n",sizeof(int)); printf("byte of char =%d\n",sizeof(char)); printf("byte of float =%d\n",sizeof(float)); printf("byte of double =%d\n",sizeof(double)); int 4 char 1 float 4 double 8 ()1 8 C 4 4 1 1 8 1: 1 0 1 2 2 10 8 4 2 32 int 4294967296 2147483648 2147483647 1 2147483648 16
1 1 unsigned int i; i 0 4294967295 1 & AND a= b & 0x0000FFFF OR a =b 0x0000FFFF << a =b<< 2 >> a =b>> 1 1: unsigned int i,j; i=0x0000000f; /* 0x 16 10 15 */ j= i & 0x00000008; /* AND */ printf("j=%d\n",j); i=0x0000000f; j= i 0x00000010; /* OR */ printf("j=%d\n",j); i=0x00000001; j= i <<2; /* */ printf("j=%d\n",j); i=0x00000010; j= i >>2; /* */ printf("j=%d\n",j); 2 17
2: 6 C 2 system system UNIX #include <stdlib.h> /**/ system("ls -al"); ls -al 18
atoi stdlib.h fgets 1 stdio.h fputs stdio.h gets stdio.h rand stdlib.h srand stdlib.h strcpy string.h strlen string.h 2: system UNIX 7 C C 7.1 int dat[5]; 0[dat]=3; /*? */ printf("dat[0]=%d\n",dat[0]); 0[dat] dat[0] dat[0] C dat[0] *(dat+0) ( dat ) 0[dat] *(0+dat) *(dat+0) 19
7.2 char dummy[50] = "ABCDE"; char dummy[50]; dummy = "ABCDE"; /* */ dummy[] = "ABCDE"; /* */ dummy[50] = "ABCDE"; /* */ (strcpy ) C = ABCDE ABCDE (A ) ABCDE 3 dummy 2 ABCDE dummy dummy char dummy[50]; dummy = "ABCDE"; 2 (dummy[]) 3 (dummy[50]) 3 *(dummy+50) ABCDE dummy ABCDE dummy ABCDE pchar pchar dummy 20
char *pchar; dummy[50]; int i; pchar ="ABCDE"; for(i=0; *(pchar+i)!= \0 ;i++) dummy[i] = *(pchar+i); printf("dummy=%s\n",dummy); strcpy 7.3 () if while while(1); while 1 if while a >b while 1 0 int a,b; while(a>b); while(1) 0 1 21
int a=1,b=2; int c; c= (a>b); printf("c=%d\n",c); c= (a<b); printf("c=%d\n",c); > < 7.4 int *p; *p p p ( C ) int-address p; p int temp; int *p = &temp; *p 2 p temp p *p *p p 1 4 int temp=5; int *p = &temp; printf("*p=5d\n",*p); 22