clwn.net
当前位置:首页 >> C语言指向结构体的指针 >>

C语言指向结构体的指针

1、结构体指针其实是一个指针,它存储的是指向某个结构体的“地址”,所以结构体指针数组存储的其实是指向一组结构体的“地址”数组,它本身并不包含结构体的具体内容(没有被分配内存)2、所以当用到他们时,要么重定向,比如:d=&b; //让d指向b,d存储的是b的地址,这样就能通过d来调用b了 要么用malloc为他们分配内存:d=(struct h *)malloc(sizeof(struct h)); 这样d就指向系统为其分配的一块内存,其内容就是struct h中的东西

下面的程序是我以前写的,你稍微改改就能符合你的要求了#include #include typedef struct st { char name[20]; int chinese; int math; int english; float average; }student; void swap(student *a, student *b) { student temp = *a; *a = *b; *b = temp; } void

#include<stdio.h>struct fa{ int number; char name[20]; char sex; int age; float score;};int main(){ struct fa a[1]={1001,"lee",'m',25,90.3}; struct fa * q; q=&a[0]; printf("Number=%d\n",(*q).number); printf("Name=%s\n",(*q).name); printf("Sex=%

struct cj *(p[100]);这样定义

ptr被声明为指针,Ptr p 那么这个p就是指向结构体的指针而P *p 也是指向结构的指针只是生命的先后不一样而已.但是如果定义P p 那么p就是结构体的对象.Ptr就不能用来定义对象了.

p的使用方法错误.p是结构体指针,p=&data.a 把p指向了结构体成员,不可以.应该这样 p = &data; 然后用p操作成员:p->n或者p->a

在VC中,int、long类型数据都占用4个字节内存单元,float也占用4个字节,而double类型则占用8个字节,其他C语言稍有不同.当这些类型的指针指向同类型数据时,该指针总是指向第一个字节,对于结构类型来说,其占用的内存单元可能要多得多,但是,与其他类型数据一样,指向结构类型的指针也指向第一个字节.从这方面来看,无论是基础类型还是定义类型数据,本质上是没有区别的.

指针用的不对 应该是#include<stdio.h>#include<stdlib.h>#include<math.h> int main() { struct student { int num; char c[10]; }s[3]={100,"ffwq",101,"dddq",102,"fwfw"}; struct student *p; p=(struct student*)&s[0]; printf("%d",p->num); system("pause"); }

p->m 是一个int*类型的指针 这里*p->m是要取被指向变量的值指向成员p->m 就是(*p).m的简化写法

struct a *ptr =(struct a *)malloc(sizeof(struct a)); ptr->c = (int *)malloc(sizeof(int) * 4); ptr->c[0] ptr->c[1] ptr->c[2] ptr->c[3]

ymjm.net | sbsy.net | jtlm.net | 6769.net | mdsk.net | 网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com