typedef ��p����ƁC���ɒ�`����Ă���^�ɁC�ʂ̐V�������O�����Ē�`���邱�Ƃ��ł���itypedef �͌^(type)��`(definition)�𗪂����L�[���[�h�ł���j�D���̕��@�͎��̒ʂ�D
typedef�@��`�������^�@��`����V�����^��;
��̓I�ɂ͎��̂悤�ɂ���D
typedef int seisu_t;
����́C seisu_t �Ƃ������O�̌^�� int �^�ł���ƒ�`���Ă���D ���̌^��`��������ł́C seisu_t �� int �̑���Ɏg�����Ƃ��ł���D �������Cint ���ȑO�Ɠ��l�Ɏg�����Ƃ��ł���D
typedef �Œ�`�����^���ɂ� _t ��t���銵�K������D ���̊��K�ɏ]���� _t ��t���Ă����ƁC ���ꂪ typedef �Œ�`���ꂽ�^���ł��邱�Ƃ���ڂŕ�����̂ŕ֗��ł���D
typedef int seisu_t; main() { int a; /* ����͐����^�ϐ��̐錾 */ seisu_t b; /* ����������^�ϐ��̐錾 */ }
��̗�́C���܂�ɂ��n�����Ă���̂ŁC���������Ӗ��̂����Ƃ��āC���̂悤�Ȃ��̂������Ă������D
typedef int * intPtr_t;
����́C intPtr_t �Ƃ������O�̌^�� int�^���w���|�C���^�^�ł���ƒ�`���Ă���D
typedef �Œ�`�����V�������O�̌^�́C�ϐ��錾�̑��ɂ��C���ʂ̌^�Ɠ����悤�Ɏg����D
typedef int * intPtr_t; /* intPtr_t �^�������ɂƂ� intPtr_t �^��߂�l�Ƃ���� */ /* p �̃|�C���^�l�� 3 �����i�߂��|�C���^�l��Ԃ� */ intPtr_t foo(intPtr_t p) { return p + 3; } main() { int a[10]; intPtr_t p; /* intPtr_t �^�̕ϐ��錾 */ p = foo(a); /* p �̒l�� a[3] ���w���|�C���^�l */ }
�@�\���̂Ƃ́C�u���낢��Ȏ�ނ݂̌��Ɋ֘A����f�[�^���܂Ƃ߂āC �P�̂����܂�ɂ������́v�ł���B ���Ƃ��C�u�����C�N��C���ʂȂǂ̃f�[�^����l�������܂Ƃ߂����́v ���̂悤�Ȃ��̂������B
�@�\���̂��\������v�f���C�\���̂̃����o�ƌĂԁB��̗�ł́C �u���O�v�u���ʁv�u�N��v�u�g���v�u�̏d�v�Ȃǂ��C�����o�ɂ�����B
�@�\���̂́C��̃f�[�^�^�ł���C���̌^�g���܂��n�߂ɐ錾����K�v������B �����āC���̌^�g���^�Ƃ���ϐ���錾����`�ō\���̂̎��́i�I�u�W�F�N�g�j��錾���C ������g�p���邱�Ƃ��ł���B
�\���̂̌^�g�̐錾�ƁC���̌^�g�����\���̕ϐ��̐錾�͎��̂悤�ɂȂ����D
struct �\���̃^�O�� {�����o�̕���}; /* �^�g�̐錾 */ struct �\���̃^�O�� �\���̕ϐ���; /* �\���̕ϐ��̐錾 */
�Ⴆ�C���}�̂悤�Ȑl�̃f�[�^���܂Ƃ߂��\���̂̒�`�͉��̂悤�ɂȂ�B
struct _person { /* _person ���^�O�� */ char name[20]; /* �����z��^�̃����o name */ char sex; /* �����^�����o sex */ int age; /* �����^�����o age */ double height; /* �{���x�����^�����o height */ double weight; /* �{���x�����^�����o weight */ }; struct _person p; /* p �Ƃ������O�� struct _person �^�ϐ���錾 */
���̍\���̂̃^�O���� _person �ł���D �^�O���ɂ͂��̐擪�� _ �����銵�K������̂ŁC����ɏ]���� _person �Ƃ������C _ �͕K�������K�v�ł͂Ȃ��B
�@�\���̃^�O���͌^���ł͂Ȃ��C��� struct �Ƃ����L�[���[�h��K�v�Ƃ���B�܂�C�P�Ƃł͈Ӗ����Ȃ����C���̂悤�ȏ������͂ł��Ȃ��B
_person p; /* �ԈႢ */
���ꂪ�ʓ|�ȂƂ��́C typedef ��p���āC struct _person ��ʂ̖��O�̌^�C �Ⴆ�� person_t �Ƃ��Ē�`���Ă����悢�B��������Cperson_t �͂��̂܂܂Ō^���ł��邩��C struct ��t����K�v���Ȃ��B
typedef struct _person person_t; /* struct _person �� person_t �Ƃ����^���Œ�` */ person_t p; /* �ϐ��� p �� person_t �^�ϐ���錾 */
�@���̂悤�ɁC typedef ��p���ĐV�����^�����`����̂Ȃ�C�͂��߂��玟�̂悤�ɏ����Ă��ǂ��B�܂��C���̏ꍇ�ɂ́C�\���̃^�O���͕K�v�ł͂Ȃ��B
typedef struct { /* �\���̂̌^�g���`���āC�����ɂ�����^�� person_t �Ƃ��Ē�`���� */ char name[20]; char sex; int age; double height; double weight; } person_t; person_t p; /* �ϐ��� p �� person_t �^�ϐ���錾 */
�@�Ȍ�́C���� typedef ��p���ĐV�����^���ڂɒ�`������@�ō\���̌^�̐錾���s�����ƂƂ���B
�@�\���̌^�̕ϐ���錾����̂Ɠ����ɁC���̊e�����o�̏����l��ݒ肷�邱�Ƃ��ł���B�e�����o�̏����l�� { } �Ŋ����C�\���̂̒�`�ɂ��鏇�ԂɊe�����o�̒l�ƂȂ�B
person_t p = {"Tom", 'M', 20, 175.2, 66.5};
�@�\���̌^�ϐ��̒��ɂ��郁���o���Q�Ɓi�A�N�Z�X�j����ɂ́C �ϐ����̌�� "." �i�s���I�h�j�ɑ����ă����o����t����B ���Ƃ��C��قǂ̗�ŗp���� p �Ƃ����ϐ����� age ���Q�Ƃ���ɂ́C p.age �Ƃ���B���̗�ł́C p ���̃����o age �� 30 �������Ă���B
typedef struct { .... int age; /* �\���̂̃����o�̈�� */ .... } person_t; int main() { person_t p; /* person_t �^�ϐ� p �̐錾 */ p.age = 30; /* p ���̃����o age �� 30 ���� */ ....
���� "." �́C�h�b�g���Z�q���邢�̓����o�Q�Ɖ��Z�q�ƌĂ��D
#include <stdio.h> typedef struct { char name[20]; char sex; int age; double height; double weight; } person_t; main() { person_t p = {"Tom", 'M', 19, 175.2, 69.5}; printf("%s %c %d %f %f\n", p.name, p.sex, p.age, p.height, p.weight); p.age ++; p.height += 0.7; p.weight -= 1.5; printf("%s %c %d %f %f\n", p.name, p.sex, p.age, p.height, p.weight); return 0; }
Tom M 19 175.200000 69.500000 Tom M 20 175.900000 68.000000
��̍\���̕ϐ��̓��e�S���� �����^�̕ʂ̍\���̕ϐ��ɁC �ʏ�̕ϐ���������̂Ɠ����悤�ɁC������邱�Ƃ��ł���D
person_t p1 = {"Tom", 'M', 19, 175.2, 69.5}; person_t p2; p2 = p1;
#include <stdio.h>
typedef struct {
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;
main()
{
person_t p1 = {"Tom", 'M', 19, 175.2, 69.5};
person_t p2;
p2 = p1; /* �\���̂̑�� */
printf("%s %c %d %f %f\n", p2.name, p2.sex, p2.age, p2.height, p2.weight);
return 0;
}
Tom M 19 175.200000 69.500000
�\���̂̂��������T�C�Y�́C���̌^��ϐ��Ɠ����悤�ɁC sizeof ���Z�q��p���ē�����D
#include <stdio.h>
typedef struct {
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;
main()
{
person_t p;
printf("name=%d, sex=%d, age=%d, height=%d, weight=%d\n",
sizeof(p.name), sizeof(p.sex), sizeof(p.age), sizeof(p.height), sizeof(p.weight));
printf("person_t=%d\n", sizeof(p));
}
��̃v���O���������s����ƁC�\���̌^�ł��� person_t �^�̃������T�C�Y���\�������D
name=20, sex=1, age=4, height=8, weight=8 person_t=44
person_t �\���̂̃����o�̃������T�C�Y��S�đ������킹��� 41 �ł���̂ɁC person_t �^�̕ϐ��̃������T�C�Y�� 44 �ƂȂ��Ă���D ���̗��R�́C�R���s���[�^�̃A�N�Z�X���x�𑬂߂邽�߂ɁC �A�N�Z�X�ɓs���̗ǂ��ʒu�Ƀ����o��z�u���邽�߂ł���D ���̌��ʁC�����o�ƃ����o�̊ԂɌ��ԁi�p�f�B���O�ƌĂԁj���ł��āC�S�̂̃������T�C�Y���傫���Ȃ�D
�\���̂���ׂ��z���������D���̐錾��`�͒ʏ�̂悤�ɂ���悢�D
#define PERSON_NUM 5
typedef struct {
char name[20];
char sex;
int age;
double height;
double weight;
} person_t;
person_t p[PERSON_NUM];
����ŁC�v�f����PERSON_NUM�i5�j�� person_t �\���̌^�z�� p ���ł���D
���Ƃ��C��̐}�ŐF�̂��Ă��� p[3] �� height �����o�ɂ́C p[3].height �ŃA�N�Z�X����D
#include <stdio.h> #define PERSON_NUM 5 typedef struct { char name[20]; char sex; int age; double height; double weight; } person_t; main() { person_t p[PERSON_NUM] = {{"Bob", 'M', 19, 165.4, 72.5}, {"Alice", 'F', 19, 161.7, 44.2}, {"Tom", 'M', 20, 175.2, 66.3}, {"Stefany", 'F', 18, 159.3, 48.5}, {"Leonardo", 'M', 19, 172.8, 67.2}}; int i; double height_sum, weight_sum, height_ave, weight_ave; height_sum = weight_sum = 0.0; for (i = 0; i < PERSON_NUM; i++) { height_sum += p[i].height; weight_sum += p[i].weight; } height_ave = height_sum / PERSON_NUM; weight_ave = weight_sum / PERSON_NUM; printf("average height = %f\n", height_ave); printf("average weight = %f\n", weight_ave); return 0; }
�\���̂̃����o�ɍ\���̂��܂߂邱�Ƃ��ł���D
���̍\���̂̌^ couple_t �́C��قǒ�`���� person_t �\���̌^�̃����o���Q�ƁCint �^�̃����o���P�����Ă���D
typedef struct { person_t boy; /* �J�b�v���̂����̒j�̎q�̏�� */ person_t girl; /* �J�b�v���̂����̏��̎q�̏�� */ int month; /* ���ۗ��i�����j */ } couple_t;
���̕ϐ��錾�Ə����l�ݒ�̎d���́C�Ⴆ�Ύ��̂悤�ɂȂ�D ��̍\���̃����o�� { } �Ŋ����Ă��邱�Ƃɒ��ӂ��悤�D
�\���̂̃����o�ł���\���̂̃����o���Q�Ƃ���ɂ́C �h�b�g���Z�q�𑱂��Ďg�p����悢�D �Ⴆ�C couple_t �^�ϐ� cpl �̃����o boy �̒��̃����o name ���Q�Ƃ���ɂ́C cpl.boy.name �Ƃ���悢�D
main()
{
couple_t cpl = {{"Tom", 'M', 20, 175.2, 66.3},
{"Stefany", 'F', 18, 159.3, 48.5},
8};
printf("%s and %s are going together for %d month(s).\n",
cpl.boy.name, cpl.girl.name, cpl.month);
return 0;
}
Tom and Stefany are going together for 8 month(s).
�\���̌^�ł��郁���o�ɂ́C�����^�̍\���̂ڑ�����邱�Ƃ��ł���D
person_t newboy = {"Leonardo", 'M', 19, 172.8, 67.2};
cpl.boy = newboy;
cpl.month = 1;
printf("%s and %s are going together for %d month(s).\n",
cpl.boy.name, cpl.girl.name, cpl.month);
return 0;
}
Leonardo and Stefany are going together for 1 month(s).
����̂��߂̃T���v���Ƃ��āC���f����\���\���̂�����Ă����D
typedef struct {
double re; /* �������� */
double im; /* �������� */
} complex_t;
���̈����Ƃ��āC�\���̑S�̂̑S�̂��i���̒l���R�s�[���āj�����n�����Ƃ��ł���D �i�z��ł́C���̂悤�Ȃ��Ƃ͂ł��Ȃ��������Ƃɒ��ӂ��悤�j
���̊� printComplex �� complex_t �\���̌^�̈������Ƃ�C�����\������D
void printComplex(complex_t c)
{
printf("%f + %f i\n", c.re, c.im);
}
main()
{
complex_t c = {1.2, 3.4};
printComplex(c);
}
1.200000 + 3.400000 i
�\���̌^�����̖߂�l�̌^�Ƃ��邱�Ƃ��ł���D �i�z������̖߂�l�Ƃ��邱�Ƃ͂ł��Ȃ��������Ƃɒ��ӂ��悤�j
���̊� addComplex �� complex_t �\���̌^�̈������Ƃ�C ���̘a�� complex_t �\���̌^�Ƃ��ĕԂ��D
complex_t addComplex(complex_t a, complex_t b)
{
complex_t c;
c.re = a.re + b.re;
c.im = a.im + b.im;
return c;
}
main()
{
complex_t a = {1.2, 3.4};
complex_t b = {5.6, 7.8};
complex_t c;
c = addComplex(a, b);
printComplex(c);
return 0;
}
6.800000 + 11.200000 i
���̈����ɁC�\���̂ւ̃|�C���^�l��^���邱�Ƃ�����D
���̊� addComplexPtr �́C�R�� complex_t �|�C���^�^�������ɂƂ�C �ŏ��̂Q���w���Ƃ���ɂ��� complex_t �^�̒l�����������̂��C �Ō�̂��̂��w���Ƃ���ɂ��� complex_t �^�ɑ������D
void addComplexPtr(complex_t *a, complex_t *b, complex_t *c) { (*c).re = (*a).re + (*b).re; (*c).im = (*a).im + (*b).im; } main() { complex_t x = {1.2, 3.4}; complex_t y = {5.6, 7.8}; complex_t z; addComplexPtr(&x, &y, &z); printComplex(z); return 0; }
6.800000 + 11.200000 i
���̂悤�ɁC�\���̑S�̂̒l���R�s�[���Ĉ����ɓn���̂ł͂Ȃ��C �|�C���^�l������n�����R�ɂ́C�����悻�Q�ʂ肠��D
��́C�\���̑S�̂̒l�����|�C���^�l�����̕��������n����Ԃ������Ƃ������Ƃł���D ����́C�������Ǝ��s���Ԃ̗L�����p�Ƃ����_�ł͑厖�ł���D ���̗�̏ꍇ�C�ŏ��̂Q�̈��� a �� b �Ƃ��|�C���^�l�ƂȂ��Ă��闝�R�������ł���D
������́C���O���̍\���̂̒��g���������ŕύX�������Ƃ��ł���D ���̗�̏ꍇ�C�Ō�̈��� c ���|�C���^�l�ƂȂ��Ă��闝�R�������ł���D
���Ő�������Ԑڃ����o�Q�Ɖ��Z�q -> ��p���āC���̂悤�ɂ��������Ƃ��ł���D
void addComplexPtr(complex_t *a, complex_t *b, complex_t *c) { c->re = a->re + b->re; c->im = a->im + b->im; }
�@�\���̂������Ƃ��ɁC�\���̌^�ϐ��ڈ����̂ł͂Ȃ��āC�\���̌^�ϐ��ւ̃|�C���^����āC�ԐړI�Ɉ������Ƃ��悭����B ���̂悤�ȂƂ��̂��߂ɁC�\���̌^���w���|�C���^�l���炻�ꂪ�w���\���̂̃����o���Q�Ƃ��邽�߂̉��Z�q "->" ������B���̏������͎��̒ʂ�B
�\���̂��w���|�C���^ -> �\���̂̃����o��
���̂悤�ɏ������ꍇ�C����͎��̂悤�ɏ����̂Ɠ����ł���B
(* �\���̂��w���|�C���^).�\���̂̃����o��
�@���Ƃ��Ύ��̗�ł́C�\���� person_t �^�̕ϐ� p �̃A�h���X���C person_t �^���w���|�C���^�ϐ� pp �ɑ�����C���� pp ���w���\���́i���Ȃ킿 p�j�̃����o age �� 45 �������Ă���B
person_t p; /* �\���� person_t �^�ϐ��̐錾 */
person_t * pp; /* person_t �^���w���|�C���^�^�̕ϐ��̐錾 */
pp = &p; /* pp �� p �̃A�h���X������ */
pp -> age = 45; /* pp ���w���\���̂̃����o age �� 45 ���� */
�܂��C��قǂ̊��̗�̏ꍇ�́C�����ɗ^����ꂽ�\���̂ւ̃|�C���^�l a, b, c ����̊ԐڎQ�Ƃ�p���Ă���D
void addComplexPtr(complex_t *a, complex_t *b, complex_t *c) { c->re = a->re + b->re; c->im = a->im + b->im; }
�@�\���̂̃����o�ڎQ�Ƃ��邽�߂̉��Z�q "." �́C
�u�����o���ڎQ�Ɖ��Z�q�v
���邢�͒P�Ɂu�����o�Q�Ɖ��Z�q�v���邢�́u�h�b�g���Z�q�v�ȂǂƌĂ��B
�@�܂��C�|�C���^����č\���̂̃����o���ԐڎQ�Ƃ��邽�߂̉��Z�q "->" �́C
�u�����o�ԐڎQ�Ɖ��Z�q�v���邢�́u�A���[�i���j���Z�q�v�ȂǂƌĂ��B
�\���̂Ƃ悭�������̂ɁC���p�́iunion�j�ƌĂ����̂�����D ����́C�\���̂Ɠ������C���낢��Ȍ^�̃f�[�^���܂Ƃ߂����̂ł���C ���̒�`�̎d���C�����o�ւ̎Q�Ƃ̎d���Ȃǂ��\���̂Ɠ����ł���D �����C����Ă���̂́C���̃����o�����������������p���Ă���Ƃ����_�ł���D
���������āC���p�̌^�̈�̕ϐ��̃����o�����́C���̂����̂ǂꂩ����������ɂ͎g�p�ł��Ȃ��D
�Ⴆ�C�l�̃f�[�^�i���O�C���ʁC�N��C�D�D�D�j���܂Ƃ߂����̂����p�̂Ƃ��č�����ꍇ�C���̒�`�͎��̂悤�ɂȂ�D
union _person { /* _person ���^�O�� */ char name[20]; /* �����z��^�̃����o name */ char sex; /* �����^�����o sex */ int age; /* �����^�����o age */ double height; /* �{���x�����^�����o height */ double weight; /* �{���x�����^�����o weight */ }; union _person p; /* p �Ƃ������O�� union _person �^�ϐ���錾 */
���̋��p�̌^�ϐ� p �̃����o�́C���̐}�̂悤�ɓ�����������ɏd�Ȃ�悤�ɔz�u�����D ���������āC���p�̑S�̂̃������T�C�Y�́C���̃����o�̍ő�̃������T�C�Y�Ɉ�v����D �i���� union _person �̏ꍇ�́C name �� 20 �o�C�g�ōő�ł��邩��C���p�̑S�̂̃T�C�Y�� 20 �ƂȂ�j
���p�̂ɂ́C���ɓ���Ȏg���������邪�C�����ł͂��̐����͂��Ȃ��ł����D
���̂悤�ɁCperson_t �\���̂łR�l���̃f�[�^�����C����� eggx ��p���ĉ摜�ŕ\������D�i�ȉ~�̐F�Ƒ傫���ƌ`�Ƃɂ́C���ʁC�g���C�̏d�f������D�j
�ȉ~�̕`�����ɂ��ẮC �v���O���~���O�`�̃E�F�u�y�[�W�ɏ����Ă���D
��l���̊G���w�肵�����ɕ\������� displayPerson ������āC ����𗘗p����悤�ɂ���ƂȂ��ǂ��D ���̂悤�Ȋ������̂�����l�́C���ׂ� main �̒��ōs���Ă��悢�D
typedef struct { char name[20]; char sex; int age; double height; double weight; } person_t; /* win �� eggx �� window �ԍ� x �͑ȉ~�Ȃǂ�`�� x ���W */ void displayPerson(int win, int x, person_t * psn) { ........ } main() { person_t p1 = {"Bob", 'M', 19, 165.4, 72.5}; person_t p2 = {"Alice", 'F', 19, 161.7, 44.2}; person_t p3 = {"Tom", 'M', 20, 175.2, 66.3}; ....... return 0; }