void clearMail(Person* data){……このように、Person構造体のポインタを引数として受け渡すようにしてあります。そして呼び出す側では、clearMail(&data);このように、構造体を収めた変数のアドレスを渡すようにしているわけです。こうすることで、構造体のアドレスを引数に受け渡すことができます。また関数側では、受け取った構造体ポインタの値を利用するのに、
data->mail = "<<no mail>>";このような書き方をしています。「◯◯->△△」というように、「->」という演算子を使って構造体ポインタから値をとり出しています。通常のように「◯◯.△△」という形では値を取り出せないので注意しましょう。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※そのまま構造体を渡す
#include <stdio.h>
typedef struct {
char* name;
int age;
char* mail;
} Person;
void clearMail(Person data){
data.mail = "<<no mail>>";
}
void printPerson(Person data){
printf("name: %s\n",data.name);
printf("age : %i\n",data.age);
printf("mail: %s\n",data.mail);
printf("\n");
}
int main (int argc, const char * argv[]) {
Person data = {"taro",30,"taro@yamada.com"};
printPerson(data);
clearMail(data);
printPerson(data);
return 0;
}
※ポインタで構造体を渡す
#include <stdio.h>
typedef struct {
char* name;
int age;
char* mail;
} Person;
void clearMail(Person* data){
data->mail = "<<no mail>>";
}
void printPerson(Person* data){
printf("name: %s\n",data->name);
printf("age : %i\n",data->age);
printf("mail: %s\n",data->mail);
printf("\n");
}
int main (int argc, const char * argv[]) {
Person data = {"taro",30,"taro@yamada.com"};
printPerson(&data);
clearMail(&data);
printPerson(&data);
return 0;
}
| << 前へ |