用C语言说明结构指针的动态内存分配
结构指针包含整个结构的加法。
它用于创建复杂的数据结构,例如链表,树,图等。
可以使用称为箭头运算符(->)的特殊运算符来访问结构的成员。
宣言
以下是C编程中结构指针的声明-
struct tagname *ptr;
例如:struct学生* s;
存取中
下面说明如何访问结构的指针。
Ptr-> membername;
例如-s-> sno,s-> sname,s-> marks;
例子1
以下是一个C程序,解释了C编程中结构的动态内存分配-
#include <stdio.h>输出结果#include <stdlib.h>
struct person {
int age;
float weight;
char name[30];
};
int main(){
struct person *ptr;
int i, n;
printf("输入人数: ");
scanf("%d", &n);
// 为n个结构体分配内存
ptr = (struct person*) malloc(n * sizeof(struct person));
for(i = 0; i < n; ++i){
printf("分别输入姓名和年龄: ");
// 要访问第一结构人的成员,
// ptr->name and ptr->age is used
// 要访问第二个结构人的成员,
// (ptr+1)->name and (ptr+1)->age is used
scanf("%s %d", (ptr+i)->name, &(ptr+i)->age);
}
printf("Displaying Information:\n");
for(i = 0; i < n; ++i)
printf("Name: %s\tAge: %d\n", (ptr+i)->name, (ptr+i)->age);
return 0;
}
执行以上程序后,将产生以下结果-
输入人数: 1分别输入姓名和年龄: bhanu 24
Displaying Information:
Name: bhanu Age: 24
例子2
考虑关于指针和结构的另一个示例,其中,给出了一个用于演示指针和结构的C程序。
#include<stdio.h>输出结果//Declaring outer and inter structures//
struct Manager{
char Name[15];
int Age;
char Gender;
float Level;
char Role[50];
char temp;
}m[20];
void main(){
//Declaring variable for For loop and pointer variable//
int i;
struct Manager *p;
//Defining Pointer//
p=&m;
//Reading User I/p//
for (i=1;i<3;i++){//Declaring function to accept 2 manager's data//
printf("Enter the Name of manager %d : ",i);
gets(p->Name);
printf("Enter the Age of manager %d : ",i);
scanf("%d",&p->Age);
scanf("%c",&p->temp);//Clearing Buffer//
printf("Enter the Gender of manager %d : ",i);
scanf("%c",&p->Gender);
//scanf("%c",&p->temp);//Clearing Buffer//
printf("Enter the level of manager %d : ",i);
scanf("%f",&p->Level);
scanf("%c",&p->temp);//Clearing Buffer//
printf("Enter the role of manager %d : ",i);
gets(p->Role);
p++;
}
//Defining Pointer one more time to print output//
p=&m;
//Printing O/p//
for (i=1;i<3;i++){
printf("The Name of Manager %d is : %s\n",i,p->Name);
printf("The Age of Manager %d is : %d\n",i,p->Age);
printf("The Gender of Manager %d is : %c\n",i,p->Gender);
printf("The Level of Manager %d is : %f\n",i,p->Level);
printf("The Role of Manager %d is : %s\n",i,p->Role);
p++;
}
}
执行以上程序后,将产生以下结果-
Enter the Name of manager 1 : HariEnter the Age of manager 1 : 55
Enter the Gender of manager 1 : M
Enter the level of manager 1 : 2
Enter the role of manager 1 : Senior
Enter the Name of manager 2 : Bob
Enter the Age of manager 2 : 60
Enter the Gender of manager 2 : M
Enter the level of manager 2 : 1
Enter the role of manager 2 : CEO
The Name of Manager 1 is : Hari
The Age of Manager 1 is : 55
The Gender of Manager 1 is : M
The Level of Manager 1 is : 2.000000
The Role of Manager 1 is : Senior
The Name of Manager 2 is : Bob
The Age of Manager 2 is : 60
The Gender of Manager 2 is : M
The Level of Manager 2 is : 1.000000
The Role of Manager 2 is : CEO
以上是 用C语言说明结构指针的动态内存分配 的全部内容, 来源链接: utcz.com/z/325048.html