typedef struct myLink {
int data;
struct myLink *next;
} myLink, *myLLink;
1、对于上面的简单结构,用函数赋值需要传递引用,需要用到指针的指针。对指针使用不是很清楚的童鞋很是头痛。
void initlink(myLink** head) {
*head= (myLink*)malloc(sizeof(myLink));
if(!*head){
printf("没有可用内存!");
}
(*head)->next = NULL;
}
int main() {
myLink* head;
initlink(&head);
}
2、为避免使用指针的指针,可以利用函数返回的方式给指针赋值。这也是最简单,最易理解的方式。
myLink* initlink( ) {
myLink* temp = (myLink*)malloc(sizeof(myLink));
temp->next = NULL;
return temp;
}
int main() {
myLink *head;
head = initlink();
}
3、变相使用指针的指针。myLLink是myLink结构类型的指针。
void initlink(myLLink* head) {
*head = (myLink*)malloc(sizeof(myLink));
(*head) ->next=NULL;
}
int main() {
myLLink head;
initlink(&head);
}
4、利用全局变量避免传递指针
#include <stdio.h>
#include <stdlib.h>
typedef struct myLink {
int data;
struct myLink *next;
} myLink;
myLink * head;
void initlink( ) ;
void creatlink( int data);
void showlist();
int main() {
initlink();
creatlink(32);
creatlink(42);
creatlink(22);
creatlink(52);
showlist();
}
void initlink( ) {
head = (myLink*)malloc(sizeof(myLink));
head->next = NULL;
}
void creatlink( int data) {
myLink* temp = (myLink*)malloc(sizeof(myLink));
temp->data = data;
temp->next = head->next;
head->next = temp;
}
void showlist() {
myLink* temp = head->next;
while (temp) {
printf("%d\n", temp->data);
temp = temp->next;
}
}
标签:myLink,初始化,head,单链,initlink,temp,int,next,语音
From: https://blog.csdn.net/qq_29448131/article/details/139837325