c语言指针和结构体6,C语言指针和结构体.doc

C语言指针和结构体.doc

c 语 言 归 纳

结构体

1.结构体类型定义

#definen STUDENT struct student

student

{ int nun ;

char name[20] ;

char sex ;

int age ;

float score ;

char addr[30];

};

2.结构体变量定义

方式一: STUDENT student1 ,student2;

方式二: struct student

{ int nun ;

char name[20] ;

char sex ;

int age ;

float score ;

char addr[30];

} student1 ,student2 ;

3.结构体类型变量的引用

错误方式:printf(“%d %s %c %d %f %s\n”,student1) ;

正确方式: ①结构体变量名.成员名 ②(*p)->成员名③p->成员名

例:student1.num=1001 ;

4.结构体变量初始化

main()

{ struct student

{int num ;

char name[20] ;

char sex ;

char addr[30];

} a={ 89031 ,”li xiao” ,’m’ ,”101 beijing road “};

printf(“no:%ld\n name:%s\n sex:%c\n address:%s\n”,a.num,a.name,a.sex,a.addr);

5.用 typedef定义类型

typedef 已有类型 新定义类型

例:typedef int COUNT ;

typedef student STD ;

指针

直接访问:按变量地址存取变量的方法;

间接访问:变量地址存放在另一个内存单元中;

指针:即一个变量的地址;

指针变量:一个专门存放另一个变量地址;

定义方法:

int i , j ;

int *pointer1 , *porinter2;

指针变量赋值: pointer1=&I ; pointer2=&j ;

I 值

3

地址2000

pointer1 I

2000 3

地址:2000

指针变量引用:

(1)&取地址运算符 例&a为变量a的地址

(2)*指针运算符(间接访问)例*p为指针变量p所指向的变量

*&a=a ( *poinrer1) ++ 相当于a++

指针运算用于数组

p=&a[0] 指向数组第一个元素

p=a 同上;

定义时int *p=a;

“数组的指针” 是指数组的起始地址;

“数组元素的指针”是指数组元素的地址;

C语言规定 p+1就是指向数组下一个元素

p+I ;a+I 就是a[I]的地址,指向a数组第I个元素

* (p+I) 或* (a+I),是 p+I或 a+I 指向的数组元素 a[I](其中a为数组a的首地址)

指向数组的指针变量也可以带下标,如p[I]等价于* (p+I)

引用数组元素的方法

下标法: a[I] 指针法: * (a+I) 或 * (p+I)

(a)* (p++) 先取*p值再指针 p+1

(b)* (++p) 先使指针p+1,再取 *p的值

例 p初值为a ; (a)语句得a[0]的值 ; (b)语句得a[1]的值

(c) (*p)++表示p指向元素值+1 ( 即a[0]++ 如a[0]=3则 a[0]=4)

(d)*(p--)相当于a[I - -] ,先取p值作”*”运算,再p自减1

(e)*(++p)=a[++I ]即先p自加1 ,再作*运算

指针小结

定义 int I 定义整型变量 I ;

int *p p为指向整型数据的指针变量

int a[n] 定义整型数组a有个n元素;

int *p[n] 定义指针数组p,它由n个指向整型数据的指针元素组成

int (*p)[n] p为指向含有n个元素的一维数组的指针变量;

int f( ) f 为带回整型函数数值的函数

int *p( ) p为指向一个指针的函数,该指针指向整型数据

int **p p是指针变量,它指向一个指向整型数据的指针变量;

int (*p)( ) p为指向函数的指针,该函数返回一个整型值

main()

{ int max(int , int );

int (*p) ( ) /*指向函数的指针变量*/

int a,b,c ;

p=max; /*P指向max函数入口地址*/

scanf(“%d %d “,&a,&b);

c=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值