- 1 1. ã¯ããã«
- 2 2. ã¢ããŒæŒç®åã®åºæ¬ãšäœ¿ãæ¹
- 3 3. ã¢ããŒæŒç®åã掻çšããå Žé¢ãå ·äœäŸä»ãã
- 4 4. ã¢ããŒæŒç®åã®å éšåäœãç解ãã
- 5 5. ã¢ããŒæŒç®åã®äœ¿çšæã®æ³šæç¹ãšãšã©ãŒå¯Ÿç
- 6 6. ãããã質åïŒFAQïŒ
- 7 7. ãŸãšããšä»åŸã®ã¹ããã
- 8 8. åèè³æãšè¿œå ãªãœãŒã¹
1. ã¯ããã«
Cèšèªã®ã¢ããŒæŒç®åãšã¯ïŒ
Cèšèªã¯ãã·ã¹ãã ããã°ã©ã ãçµã¿èŸŒã¿ãœãããŠã§ã¢ã®éçºã«åºãçšããããŠããããã°ã©ãã³ã°èšèªã§ãããã®äžã§ããã¢ããŒæŒç®åïŒ->
ïŒãã¯ãæ§é äœã®ãã€ã³ã¿ãæäœããéã«éåžžã«äŸ¿å©ãªæ©èœã§ãã
ã¢ããŒæŒç®åã䜿çšãããšãæ§é äœã®ã¡ã³ãã«å¯ŸããŠç°¡æœãã€å¯èªæ§ã®é«ãã³ãŒããèšè¿°ã§ããŸããç¹ã«ããã€ã³ã¿ãä»ããŠããŒã¿ãæ±ãå Žé¢ã§ã¯é »ç¹ã«äœ¿çšããããããç解ããŠããããšãéèŠã§ãã
æ¬èšäºã®å¯Ÿè±¡èªè ãšåŠç¿ç®æš
ãã®èšäºã¯ã以äžã®èªè ã察象ãšããŠããŸãã
- CèšèªãåŠç¿äžã§ãæ§é äœããã€ã³ã¿ã«ã€ããŠåºç€ç¥èãããæ¹ã
- ã¢ããŒæŒç®åã®äœ¿ãæ¹ãå¿çšäŸã詳ããç¥ãããæ¹ã
- ããã°ã©ã ã®å¯èªæ§ãå¹çãåäžããããæ¹ã
æ¬èšäºã§ã¯ãã¢ããŒæŒç®åã®åºæ¬çãªäœ¿ãæ¹ããå¿çšäŸã泚æç¹ããšã©ãŒå¯ŸçãŸã§å¹ åºã解説ããŸããããã«ãããã¢ããŒæŒç®åã䜿ã£ãå®çšçãªããã°ã©ã äœæãå¯èœã«ãªãããšãç®æããŸãã
2. ã¢ããŒæŒç®åã®åºæ¬ãšäœ¿ãæ¹
ã¢ããŒæŒç®åãšã¯ïŒèšå·ãšæ§æã解説
ã¢ããŒæŒç®åïŒ->
ïŒã¯ãCèšèªã§ãã€ã³ã¿ãä»ããŠæ§é äœã®ã¡ã³ãã«ã¢ã¯ã»ã¹ããããã®æŒç®åã§ãã
æ§æ
pointer->member;
ãã®èšè¿°ã¯ã以äžãšåãæå³ãæã¡ãŸãã
(*pointer).member;
ã¢ããŒæŒç®åã¯ãæ¬åŒ§ãã¢ã¹ã¿ãªã¹ã¯ã䜿ã£ãè¡šèšãããç°¡æœã§å¯èªæ§ãé«ããããåºã䜿çšãããŠããŸãã
ãããæŒç®åïŒ.
ïŒãšã®éããšäœ¿ãåã
æ§é äœã®ã¡ã³ãã«ã¢ã¯ã»ã¹ããæ¹æ³ã¯2ã€ãããŸãã
- ãããæŒç®åïŒ
.
ïŒ
éåžžã®æ§é äœå€æ°ã䜿ãå Žåã
struct Person {
char name[20];
int age;
};
struct Person p = {"Alice", 25};
printf("%s
", p.name); // ãããæŒç®åã䜿çš
- ã¢ããŒæŒç®åïŒ
->
ïŒ
æ§é äœãã€ã³ã¿ã䜿ãå Žåã
struct Person {
char name[20];
int age;
};
struct Person p = {"Alice", 25};
struct Person *ptr = &p;
printf("%s
", ptr->name); // ã¢ããŒæŒç®åã䜿çš
éãã®ãŸãšã
- ãããæŒç®åã¯ãæ§é äœå€æ°ãã®ãã®ã«ã¢ã¯ã»ã¹ããå Žåã«äœ¿çšããŸãã
- ã¢ããŒæŒç®åã¯ããã€ã³ã¿ãéããŠæ§é äœã®ã¡ã³ãã«ã¢ã¯ã»ã¹ããéã«äœ¿çšããŸãã
ã¢ããŒæŒç®åã®æ§æãšåºæ¬äŸ
äŸ1: æ§é äœãšãã€ã³ã¿ã䜿ã£ãåºæ¬çãªäœ¿çšäŸ
#include <stdio.h>
#include <string.h>
// æ§é äœã®å®çŸ©
struct Person {
char name[20];
int age;
};
int main() {
// æ§é äœã®å€æ°ãšãã€ã³ã¿ã®äœæ
struct Person p1;
struct Person *ptr;
// ãã€ã³ã¿ã«ã¢ãã¬ã¹ã代å
¥
ptr = &p1;
// ã¢ããŒæŒç®åã§ã¡ã³ãã«ã¢ã¯ã»ã¹
strcpy(ptr->name, "Alice");
ptr->age = 25;
// åºå
printf("Name: %s
", ptr->name);
printf("Age: %d
", ptr->age);
return 0;
}
å®è¡çµæ:
Name: Alice
Age: 25
ãã®äŸã§ã¯ãæ§é äœPerson
ã®å€æ°p1
ã®ã¢ãã¬ã¹ããã€ã³ã¿ptr
ã«ä»£å
¥ããã¢ããŒæŒç®åã䜿ã£ãŠæ§é äœã¡ã³ãã«ã¢ã¯ã»ã¹ããŠããŸãã
3. ã¢ããŒæŒç®åã掻çšããå Žé¢ãå ·äœäŸä»ãã
ãªã³ã¯ãªã¹ãã«ãããã¢ããŒæŒç®åã®æŽ»çšäŸ
ãªã³ã¯ãªã¹ãã¯ãããŒã¿æ§é ãšããŠããå©çšãããæŠå¿µã§ããããã§ã¯ã¢ããŒæŒç®åã䜿ã£ãŠãªã³ã¯ãªã¹ããæäœããæ¹æ³ã解説ããŸãã
äŸ1: åæ¹åãªã³ã¯ãªã¹ãã®å®è£
#include <stdio.h>
#include <stdlib.h>
// ããŒãã®å®çŸ©
struct Node {
int data;
struct Node *next;
};
// æ°ããããŒããäœæããé¢æ°
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// ãªã¹ãã®å
容ã衚瀺ããé¢æ°
void displayList(struct Node *head) {
struct Node *current = head;
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next; // ã¢ããŒæŒç®åã䜿çš
}
printf("NULL
");
}
int main() {
// ããŒãã®äœæ
struct Node *head = createNode(10);
head->next = createNode(20); // ã¢ããŒæŒç®åã§æ¬¡ã®ããŒãããªã³ã¯
head->next->next = createNode(30); // ããã«æ¬¡ã®ããŒãããªã³ã¯
// ãªã¹ãã®å
容ã衚瀺
displayList(head);
return 0;
}
å®è¡çµæ:
10 -> 20 -> 30 -> NULL
ãã®äŸã§ã¯ãã¢ããŒæŒç®åã䜿ã£ãŠæ¬¡ã®ããŒããžã®ãªã³ã¯ãæäœããŠããŸããããã«ãããæ§é äœã®ãã€ã³ã¿çµç±ã§ããŒã¿ãå¹çãã管çã§ããŸãã
ããªãŒæ§é ã§ã®å¿çšäŸ
ããªãŒæ§é ããŸããã¢ããŒæŒç®åã®å©çšé »åºŠãé«ãããŒã¿æ§é ã®äžã€ã§ããããã§ã¯äºåæšïŒãã€ããªããªãŒïŒã®äŸã玹ä»ããŸãã
äŸ2: äºåæ¢çŽ¢æšãžã®ããŒãè¿œå ãšæ¢çŽ¢
#include <stdio.h>
#include <stdlib.h>
// ããŒãã®å®çŸ©
struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
};
// æ°ããããŒããäœæããé¢æ°
struct TreeNode* createNode(int data) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// ããŒããè¿œå ããé¢æ°
struct TreeNode* insertNode(struct TreeNode* root, int data) {
if (root == NULL) {
return createNode(data);
}
if (data < root->data) {
root->left = insertNode(root->left, data); // ã¢ããŒæŒç®åã䜿çš
} else {
root->right = insertNode(root->right, data); // ã¢ããŒæŒç®åã䜿çš
}
return root;
}
// æšãåé èµ°æ»ïŒPreorder TraversalïŒã§è¡šç€ºããé¢æ°
void preorderTraversal(struct TreeNode* root) {
if (root != NULL) {
printf("%d ", root->data);
preorderTraversal(root->left); // å·Šéšåæšãååž°çã«è¡šç€º
preorderTraversal(root->right); // å³éšåæšãååž°çã«è¡šç€º
}
}
int main() {
struct TreeNode* root = NULL;
// ããŒããè¿œå
root = insertNode(root, 50);
insertNode(root, 30);
insertNode(root, 70);
insertNode(root, 20);
insertNode(root, 40);
// åé èµ°æ»ã§åºå
printf("Preorder Traversal: ");
preorderTraversal(root);
printf("
");
return 0;
}
å®è¡çµæ:
Preorder Traversal: 50 30 20 40 70
ãã®ã³ãŒãã§ã¯ãã¢ããŒæŒç®åã䜿ã£ãŠå·Šå³ã®ããŒãããªã³ã¯ããäºåæšãæ§ç¯ããŠããŸããã¢ããŒæŒç®åã«ããããã€ã³ã¿ãæ±ãè€éãªåŠçãç°¡æœã«èšè¿°ã§ããããã«ãªããŸãã
åçã¡ã¢ãªå²ãåœãŠãšã¢ããŒæŒç®åã®çµã¿åãã
ã¢ããŒæŒç®åã¯ãåçã¡ã¢ãªå²ãåœãŠãšçµã¿åãããŠäœ¿ãå Žé¢ã§ãé »åºããŸãã以äžã¯ãæ§é äœãåçã«çæããããŒã¿ãæ ŒçŽããäŸã§ãã
äŸ3: mallocãšã¢ããŒæŒç®åã®å©çš
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
char name[20];
int age;
};
int main() {
// ã¡ã¢ãªãåçã«ç¢ºä¿
struct Student *s = (struct Student*)malloc(sizeof(struct Student));
// ããŒã¿ã®ä»£å
¥
printf("Enter name: ");
scanf("%s", s->name);
printf("Enter age: ");
scanf("%d", &(s->age));
// åºå
printf("Name: %s, Age: %d
", s->name, s->age);
// ã¡ã¢ãªè§£æŸ
free(s);
return 0;
}
å®è¡çµæ:
Enter name: Alice
Enter age: 20
Name: Alice, Age: 20
ãã®äŸã§ã¯ãã¢ããŒæŒç®åã䜿ã£ãŠãåçã«ç¢ºä¿ããã¡ã¢ãªé åã®ããŒã¿ã«ã¢ã¯ã»ã¹ããŠããŸãã
4. ã¢ããŒæŒç®åã®å éšåäœãç解ãã
ã¢ããŒæŒç®åãšãããæŒç®åã®ç䟡æ§
ã¢ããŒæŒç®åïŒ->
ïŒã¯ã次ã®èšè¿°ãšç䟡ã§ãã
ptr->member;
(*ptr).member;
ãã®èšè¿°ã¯ããã€ã³ã¿ptr
ãæããŠããæ§é äœã®ã¡ã³ãmember
ã«ã¢ã¯ã»ã¹ããããã®2ã€ã®ç°ãªãè¡šèšã瀺ããŠããŸãã
å ·äœäŸ
#include <stdio.h>
#include <string.h>
struct Person {
char name[20];
int age;
};
int main() {
struct Person p = {"Alice", 25};
struct Person *ptr = &p;
// ã¢ããŒæŒç®å
printf("%s
", ptr->name);
// ãããæŒç®åãçšããç䟡ãªè¡šèš
printf("%s
", (*ptr).name);
return 0;
}
å®è¡çµæ:
Alice
Alice
ãã®ããã«ãã¢ããŒæŒç®åã¯(*ptr).member
ã®ç°¡æœãªè¡šèšã§ããç¹ã«ãã€ã³ã¿ãé »ç¹ã«æäœããããã°ã©ã ã§ã¯ãã³ãŒãã®å¯èªæ§ãšèšè¿°ã®ç°¡ç¥åã«è²¢ç®ããŸãã
ç³è¡£æ§æãšããŠã®åœ¹å²
ã¢ããŒæŒç®åã¯ããããããç³è¡£æ§æïŒã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ãŒïŒãã®äžçš®ã§ããç³è¡£æ§æãšã¯ãããã°ã©ã ã®åäœã«åœ±é¿ãäžããããšãªããããç°¡æœã§ç解ããããèšè¿°ãæäŸããæ§æãæããŸãã
äŸ:
(*ptr).member; // æšæºçãªæ§æïŒåé·ïŒ
ptr->member; // ç°¡æœã§ããããããç³è¡£æ§æ
ç³è¡£æ§æã䜿ãããšã§ãæ¬åŒ§ã®ä»ãå¿ããªã©ã®ã±ã¢ã¬ã¹ãã¹ãé²ããããã°ã©ã ã®ã¡ã³ããã³ã¹æ§ãåäžããŸãã
ã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ãšãã€ã³ã¿ã®ä»çµã¿
ã¢ããŒæŒç®åã䜿çšããéã«ã¯ããã€ã³ã¿ãã¡ã¢ãªã®ã©ããæããŠããããæ£ç¢ºã«ç解ããå¿ èŠããããŸãã
ã¡ã¢ãªã¢ãã«ã®ã€ã¡ãŒãž:
ã¡ã¢ãªã¢ãã¬ã¹ | å€ |
---|---|
0x1000 | æ§é äœã®éå§å°ç¹ |
0x1004 | ã¡ã³ã1ïŒnameïŒ |
0x1020 | ã¡ã³ã2ïŒageïŒ |
ãã€ã³ã¿ã0x1000
ãæããŠããå Žåãã¢ããŒæŒç®åã䜿ãããšã§ãªãã»ããèšç®ãèªåçã«åŠçããã¡ã³ããžã¢ã¯ã»ã¹ããŸãã
äŸ4: ã¡ã¢ãªé 眮ãèæ ®ããã¢ã¯ã»ã¹
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Data {
int id;
char name[20];
};
int main() {
struct Data *ptr = (struct Data*)malloc(sizeof(struct Data));
ptr->id = 101;
strcpy(ptr->name, "Alice");
printf("ID: %d, Name: %s
", ptr->id, ptr->name);
free(ptr); // ã¡ã¢ãªè§£æŸ
return 0;
}
å®è¡çµæ:
ID: 101, Name: Alice
ãã®ã³ãŒãã§ã¯ãã¡ã¢ãªç¢ºä¿ãšããŒã¿ã®ç®¡çãå¹ççã«è¡ã£ãŠããŸããã¢ããŒæŒç®åã«ããã¢ã¯ã»ã¹ã¯ããã®ãããªå Žé¢ã§éåžžã«åœ¹ç«ã¡ãŸãã
5. ã¢ããŒæŒç®åã®äœ¿çšæã®æ³šæç¹ãšãšã©ãŒå¯Ÿç
ãããããšã©ãŒãšãã®åé¿ç
ã¢ããŒæŒç®åã䜿çšããéã«ã¯ããã€ã³ã¿ãã¡ã¢ãªç®¡çã«é¢ãã泚æãå¿ èŠã§ããããã§ã¯ãããçºçãããšã©ãŒãšãã®å¯ŸåŠæ³ã«ã€ããŠè§£èª¬ããŸãã
ãšã©ãŒ1: NULLãã€ã³ã¿ã®åç §
ç¶æ³: ãã€ã³ã¿ãNULLãæããŠããç¶æ ã§ã¢ããŒæŒç®åã䜿çšãããšãå®è¡æãšã©ãŒïŒã»ã°ã¡ã³ããŒã·ã§ã³ãã©ã«ãïŒãçºçããŸãã
äŸ: ãšã©ãŒã³ãŒã
struct Data {
int id;
};
int main() {
struct Data *ptr = NULL;
ptr->id = 10; // ãšã©ãŒçºç
return 0;
}
解決ç: ãã€ã³ã¿ã䜿çšããåã«å¿ ãNULLãã§ãã¯ãè¡ããŸãããã
ä¿®æ£çã³ãŒã:
struct Data {
int id;
};
int main() {
struct Data *ptr = NULL;
if (ptr != NULL) {
ptr->id = 10;
} else {
printf("ãã€ã³ã¿ãNULLã§ã
");
}
return 0;
}
ãšã©ãŒ2: ã¡ã¢ãªç¢ºä¿ã®å€±æ
ç¶æ³: malloc
é¢æ°ã§ã¡ã¢ãªç¢ºä¿ã«å€±æããå Žåããã€ã³ã¿ã¯NULLãæããŸãããã®ç¶æ
ã§ã¢ããŒæŒç®åã䜿çšãããšãšã©ãŒã«ãªããŸãã
äŸ: ãšã©ãŒã³ãŒã
struct Data {
int id;
};
int main() {
struct Data *ptr = (struct Data*)malloc(sizeof(struct Data));
ptr->id = 10; // ã¡ã¢ãªç¢ºä¿å€±ææã¯ãšã©ãŒçºç
free(ptr);
return 0;
}
解決ç: ã¡ã¢ãªç¢ºä¿åŸã«NULLãã§ãã¯ãè¡ããŸãã
ä¿®æ£çã³ãŒã:
struct Data {
int id;
};
int main() {
struct Data *ptr = (struct Data*)malloc(sizeof(struct Data));
if (ptr == NULL) {
printf("ã¡ã¢ãªã®ç¢ºä¿ã«å€±æããŸããã
");
return 1;
}
ptr->id = 10;
printf("ID: %d
", ptr->id);
free(ptr); // ã¡ã¢ãªè§£æŸ
return 0;
}
ãšã©ãŒ3: åæåãããŠããªããã€ã³ã¿ã®äœ¿çš
ç¶æ³: åæåãããŠããªããã€ã³ã¿ã¯äžå®å€ãæã€ãããäºæããªãã¡ã¢ãªé åã«ã¢ã¯ã»ã¹ããããã°ã©ã ãã¯ã©ãã·ã¥ããå¯èœæ§ããããŸãã
äŸ: ãšã©ãŒã³ãŒã
struct Data {
int id;
};
int main() {
struct Data *ptr; // åæåãããŠããªããã€ã³ã¿
ptr->id = 10; // ãšã©ãŒçºç
return 0;
}
解決ç: ãã€ã³ã¿ã¯äœ¿çšåã«å¿ ãNULLã§åæåããããæå¹ãªã¡ã¢ãªãå²ãåœãŠãããã«ããŸãã
ä¿®æ£çã³ãŒã:
struct Data {
int id;
};
int main() {
struct Data *ptr = NULL; // åæå
printf("ãã€ã³ã¿ãæªåæåã§ãã
");
return 0;
}
å®å šæ§ãé«ããã³ãŒãã£ã³ã°ã®ã³ã
1. ã¡ã¢ãªãªãŒã¯ãé²ãããã®æ³šæç¹
- åçã«ç¢ºä¿ããã¡ã¢ãªã¯ã䜿çšåŸã«å¿
ã
free()
ã§è§£æŸããŸãããã - é¢æ°å ã§ç¢ºä¿ããã¡ã¢ãªã¯ãé¢æ°ãæããåã«è§£æŸããç¿æ £ãã€ããŸãã
äŸ:
struct Data *ptr = (struct Data*)malloc(sizeof(struct Data));
// 䜿çšåŸã«è§£æŸ
free(ptr);
2. NULLãã€ã³ã¿ãæ±ãéã®é²åŸ¡ã³ãŒã
ãã€ã³ã¿ã®ãã§ãã¯ãæšæºåããã³ãŒãã®å®å šæ§ãé«ããŸãã
äŸ:
if (ptr == NULL) {
printf("ãšã©ãŒ: ãã€ã³ã¿ãNULLã§ãã
");
return;
}
3. éç解æããŒã«ã®æŽ»çš
ã³ãŒãã®å®å šæ§ãèªåã§ãã§ãã¯ããããŒã«ã䜿çšããŠããšã©ãŒãã¡ã¢ãªãªãŒã¯ãé²æ¢ããŸãã
ããããããŒã«:
- ValgrindïŒã¡ã¢ãªãªãŒã¯æ€åºïŒ
- CppcheckïŒéç解æïŒ
6. ãããã質åïŒFAQïŒ
Q1. ãããæŒç®åãšã¢ããŒæŒç®åã¯ã©ã䜿ãåããïŒ
A: ãããæŒç®åïŒ.
ïŒãšã¢ããŒæŒç®åïŒ->
ïŒã¯ãã©ã¡ããæ§é äœã®ã¡ã³ãã«ã¢ã¯ã»ã¹ããããã«äœ¿çšãããŸããã䜿ãæ¹ãç°ãªããŸãã
- ãããæŒç®åïŒ
.
ïŒã¯ãæ§é äœå€æ°ãçŽæ¥æ±ãå Žåã«äœ¿çšããŸãã
struct Person {
char name[20];
int age;
};
struct Person p = {"Alice", 25};
printf("%s
", p.name); // ãããæŒç®åã䜿çš
- ã¢ããŒæŒç®åïŒ
->
ïŒã¯ãæ§é äœã®ãã€ã³ã¿ã䜿ãå Žåã«äœ¿çšããŸãã
struct Person p = {"Alice", 25};
struct Person *ptr = &p;
printf("%s
", ptr->name); // ã¢ããŒæŒç®åã䜿çš
䜿ãåãã®ãã€ã³ã:
- æ§é äœå€æ°ãçŽæ¥æ±ãå Žåã¯ãããæŒç®åã
- ãã€ã³ã¿çµç±ã§ã¢ã¯ã»ã¹ããå Žåã¯ã¢ããŒæŒç®åã
Q2. ã¢ããŒæŒç®åã¯é åã§ã䜿ããïŒ
A: ã¢ããŒæŒç®åã¯æ§é äœã®ãã€ã³ã¿ã«å¯ŸããŠã®ã¿äœ¿çšã§ããŸããé åèªäœã«ã¯ã¢ããŒæŒç®åã¯äœ¿ããŸããããé åã®èŠçŽ ãæ§é äœã®å Žåã¯ããã€ã³ã¿ãšçµã¿åãããŠäœ¿çšã§ããŸãã
äŸ: é åãšã¢ããŒæŒç®åã®çµã¿åãã
#include <stdio.h>
#include <string.h>
struct Person {
char name[20];
int age;
};
int main() {
struct Person people[2] = {{"Alice", 25}, {"Bob", 30}};
struct Person *ptr = people;
printf("%s, %d
", ptr->name, ptr->age); // ã¢ããŒæŒç®åã䜿çš
ptr++; // 次ã®èŠçŽ ã«ç§»å
printf("%s, %d
", ptr->name, ptr->age);
return 0;
}
å®è¡çµæ:
Alice, 25
Bob, 30
ãã®ããã«ãé åã®èŠçŽ ãæ§é äœã®å Žåã¯ããã€ã³ã¿ã䜿ãããšã§ã¢ããŒæŒç®åãé©çšã§ããŸãã
Q3. ã¢ããŒæŒç®åã䜿ãéã®æ³šæç¹ã¯ïŒ
A: ã¢ããŒæŒç®åã䜿ãå Žåãç¹ã«ä»¥äžã®ç¹ã«æ³šæããŸãããã
- NULLãã€ã³ã¿åç
§ãé²ã:
ãã€ã³ã¿ãNULLãæããŠããªãããšãå¿ ããã§ãã¯ããŠãã ããã
if (ptr != NULL) {
ptr->age = 20;
}
- ã¡ã¢ãªç¢ºä¿ã®ç¢ºèª:
malloc
ãªã©ã§ç¢ºä¿ããã¡ã¢ãªé åãæ£ããå²ãåœãŠãããŠããã確èªããŸãã
ptr = (struct Data*)malloc(sizeof(struct Data));
if (ptr == NULL) {
printf("ã¡ã¢ãªç¢ºä¿ã«å€±æããŸããã
");
}
- ã¡ã¢ãªãªãŒã¯ãé²æ¢:
åçã«ç¢ºä¿ããã¡ã¢ãªã¯ã䜿çšåŸã«å¿ ã解æŸããŸãã
free(ptr);
Q4. æ§é äœã®äžã«ãã€ã³ã¿ãå«ãå Žåã®ã¢ããŒæŒç®åã®äœ¿ãæ¹ã¯ïŒ
A: æ§é äœã®äžã«ãã€ã³ã¿ãå«ãå Žåããã¢ããŒæŒç®åãçšããããšã§ç°¡æœã«ã¢ã¯ã»ã¹ã§ããŸãã
äŸ: æ§é äœã®äžã«ãã€ã³ã¿ãå«ãå Žå
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
int main() {
struct Node *head = (struct Node*)malloc(sizeof(struct Node));
head->data = 10;
head->next = NULL;
printf("Data: %d
", head->data); // ã¢ããŒæŒç®åã§ã¢ã¯ã»ã¹
free(head); // ã¡ã¢ãªè§£æŸ
return 0;
}
å®è¡çµæ:
Data: 10
ãã®äŸã§ã¯ãæ§é äœå éšã®ãã€ã³ã¿ã䜿ããªããã¢ããŒæŒç®åã§å¹çããããŒã¿ã«ã¢ã¯ã»ã¹ããŠããŸãã
7. ãŸãšããšä»åŸã®ã¹ããã
ã¢ããŒæŒç®åã®éèŠãã€ã³ãå確èª
æ¬èšäºã§ã¯ãCèšèªã®ã¢ããŒæŒç®åïŒ->
ïŒã«ã€ããŠãåºç€ããå¿çšãŸã§è©³ãã解説ããŸããã以äžã«éèŠãªãã€ã³ããæ¯ãè¿ããŸãã
- ã¢ããŒæŒç®åã®åœ¹å²ãšäœ¿ãæ¹:
- æ§é äœã®ãã€ã³ã¿ã䜿ã£ãŠã¡ã³ãã«ã¢ã¯ã»ã¹ããããã®ç°¡æœãªèšè¿°æ³ã
- ãããæŒç®åïŒ
.
ïŒãšã®éããšäœ¿ãåããç解ããããšã§ãé©åã«å©çšå¯èœã
- å ·äœçãªå¿çšäŸ:
- ãªã³ã¯ãªã¹ããããªãŒæ§é : ããŒã¿æ§é ãæ±ãå Žé¢ã§ã¢ããŒæŒç®åã¯å¿ é ã
- åçã¡ã¢ãªç®¡ç: mallocãªã©ã®ã¡ã¢ãªå²ãåœãŠãšçµã¿åãããããšã§æè»ãªããã°ã©ã ãäœæã§ããã
- 泚æç¹ãšãšã©ãŒå¯Ÿç:
- NULLãã€ã³ã¿åç §ãã¡ã¢ãªãªãŒã¯å¯Ÿç: å®è·µçãªãšã©ãŒé²æ¢ã³ãŒãã玹ä»ã
- å®å šæ§ãé«ããã³ãŒãã£ã³ã°ã®ã³ã: éç解æããŒã«ã®æŽ»çšãæšå¥šã
- ãããã質åïŒFAQïŒ:
- ã¢ããŒæŒç®åã«é¢ããçåã䜿ãæ¹ã®ã³ããQA圢åŒã§è§£èª¬ããå®è·µçãªç解ãæ·±ããã
次ã«åŠã¶ã¹ãé¢é£ãããã¯
ã¢ããŒæŒç®åã®ç解ãããã«æ·±ããããã«ã次ã®ã¹ããããšããŠä»¥äžã®ãããã¯ãåŠç¿ããããšãããããããŸãã
- ãã€ã³ã¿ãšæ§é äœã®å¿çš:
- å€éãã€ã³ã¿ãé¢æ°ãã€ã³ã¿ãçµã¿åãããé«åºŠãªããã°ã©ã èšèšã
- ã¡ã¢ãªç®¡çã匷åããããã®åçé åã®å®è£ æ¹æ³ã
- Cèšèªã®ã¡ã¢ãªç®¡ç:
calloc
ãrealloc
ãªã©ã®åçã¡ã¢ãªç®¡çé¢æ°ã®æŽ»çšæ¹æ³ã- ã¡ã¢ãªãªãŒã¯ãã»ã°ã¡ã³ããŒã·ã§ã³ãã©ã«ããé²ããããã°æè¡ã
- ããŒã¿æ§é ãšã¢ã«ãŽãªãºã :
- ãªã³ã¯ãªã¹ããã¹ã¿ãã¯ããã¥ãŒãããªãŒãªã©ã®ããŒã¿æ§é ã®èšèšãšå®è£ ã
- æ§é äœã掻çšãããœãŒããæ€çŽ¢ã¢ã«ãŽãªãºã ã
- ããã°ã©ã ã®æé©å:
- ã³ãŒãã®æé©åæè¡ãšããã©ãŒãã³ã¹åäžã®ãã¯ããã¯ã
- ã³ãŒãã¬ãã¥ãŒãšéç解æããŒã«ã®äœ¿ãæ¹ã
å®è·µç·Žç¿åé¡ããããžã§ã¯ãäŸ
ã¢ããŒæŒç®åãããæ·±ãç解ããããã«ã¯ãå®éã«ã³ãŒããæžããŠè©ŠãããšãéèŠã§ãã以äžã®ãããžã§ã¯ãäŸã«ææŠããŠã¿ãŸãããã
- ãªã³ã¯ãªã¹ãã®æäœ:
- ããŒã¿ã®è¿œå ãåé€ãæ€çŽ¢æ©èœãå®è£ ããããã°ã©ã ãäœæã
- äºåæ¢çŽ¢æšã®äœæãšæ€çŽ¢:
- ååž°ã掻çšããŠæšæ§é ã®æ¿å ¥ãšæ¢çŽ¢ã¢ã«ãŽãªãºã ãå®è£ ã
- é£çµãã¥ãŒãã¹ã¿ãã¯ã®å®è£ :
- åçã¡ã¢ãªç®¡çãå©çšããŠå¹ççãªããŒã¿æ§é ãæ§ç¯ã
- ãã¡ã€ã«ç®¡çã·ã¹ãã ã®èšèš:
- æ§é äœãšãã€ã³ã¿ã䜿ã£ãŠã·ã³ãã«ãªããŒã¿ããŒã¹ã¢ããªã±ãŒã·ã§ã³ãäœæã
æåŸã«
ã¢ããŒæŒç®åã¯ãCèšèªã§ãã€ã³ã¿ãšæ§é äœãçµã¿åãããããã°ã©ã ãæžãéã«æ¬ ãããªãæŒç®åã§ããæ¬èšäºã§ã¯ãåºæ¬çãªäœ¿ãæ¹ããå¿çšäŸã泚æç¹ãŸã§äœç³»çã«è§£èª¬ããŸããã
ããã°ã©ãã³ã°ã®ã¹ãã«ãåäžãããããã«ã¯ãã³ãŒããæžããŠè©Šãããšã©ãŒã«åãåããªããç解ãæ·±ããããšã倧åã§ããæ¬èšäºã®å 容ãåèã«ãããé«åºŠãªããã°ã©ã äœæã«ææŠããŠãã ããã
次ã®ã¹ããããšããŠããã€ã³ã¿ã®å¿çšãããŒã¿æ§é ã®åŠç¿ãé²ããããšã§ãããã«å®è·µçãªããã°ã©ãã³ã°ã¹ãã«ã身ã«ã€ããããšãã§ããã§ãããã
8. åèè³æãšè¿œå ãªãœãŒã¹
ãªã³ã©ã€ã³ãªãœãŒã¹
Cèšèªãã¢ããŒæŒç®åã«ã€ããŠããã«è©³ããåŠã³ããæ¹ã®ããã«ãæçãªãªã³ã©ã€ã³ãªãœãŒã¹ã玹ä»ããŸãã
- ããã¥ã¢ã«ãªãã¡ã¬ã³ã¹
- ãµã€ãå: cppreference.comïŒè±èªçïŒ
- å 容: CèšèªãšC++ã®æšæºã©ã€ãã©ãªãªãã¡ã¬ã³ã¹ãã¢ããŒæŒç®åãé¢é£é¢æ°ã«ã€ããŠè©³çŽ°ã«èšèŒãããŠããŸãã
- ãªã³ã©ã€ã³ã³ã³ãã€ã©ãšãããã¬
- ãµã€ãå: OnlineGDB
- å 容: ãã©ãŠã¶äžã§Cèšèªã®ã³ãŒããå®è¡ã»ãããã°ã§ããç°å¢ãæäŸããŸããåäœç¢ºèªããšã©ãŒä¿®æ£ã«åœ¹ç«ã¡ãŸãã
æžç±
Cèšèªã®åŠç¿ãããã«æ·±ãããæ¹ã«ã¯ã以äžã®æžç±ãããããã§ãã
- èè : æŽç°ææŽ
- æŠèŠ: åå¿è åãã«Cèšèªã®åºæ¬ã解説ãããã³ã°ã»ã©ãŒãæ§é äœããã€ã³ã¿ã詳ããã«ããŒããŠããŸãã
- èè : åæ© å匥
- æŠèŠ: ãã€ã³ã¿ãäžå¿ã«è§£èª¬ããå°éæžãã¢ããŒæŒç®åã®å¿çšäŸãå«ãŸããŠããŸãã
- èè : Brian W. Kernighan, Dennis M. Ritchie
- æŠèŠ: Cèšèªã®æšæºçãªæç§æžããã€ã³ã¿ãæ§é äœã®äœ¿çšæ³ã«ã€ããŠæ¬æ Œçã«åŠã¹ãŸãã
ãµã³ãã«ã³ãŒãããŠã³ããŒã
ã³ãŒãã£ã³ã°ç·Žç¿ãµã€ã
- paizaã©ãŒãã³ã°
- URL: https://paiza.jp
- å 容: å®è·µçãªããã°ã©ãã³ã°åé¡ã«ææŠã§ãããµã€ããCèšèªã®æŒç¿åé¡ãè±å¯ã§ãã
- AtCoder
- URL: https://atcoder.jp
- å 容: ã¢ã«ãŽãªãºã ãããŒã¿æ§é ã«é¢ãã競æããã°ã©ãã³ã°ãµã€ããã¢ããŒæŒç®åã®å¿çšåé¡ãæ±ãããŠããŸãã