C语言--结构体指针--day02
2014-10-30 10:52
27 查看
结构体的定义
1.struct name{
数据类型 变量名;
数据类型 变量名;
//int a;
//char ch;
};
2.struct name{
数据类型 变量名;
数据类型 变量名;
//int a;
//char ch;
}b1,b2,b3;//变量b1,变量b2,变量b3;
3.typedef struct name{
数据类型 变量名;
数据类型 变量名;
//int a;
//char ch;
}name1,*pname2;//给“struct name”重命名:"stu_t";[b]给“struct name*(指针)”重命名:"pname2";[/b]
4.struct name{
数据类型 变量名;
数据类型 变量名;
//int a;
//char ch;
};
typedef name name_1;
typedef name* pname_2;
//给"struct name"重命名为“name_1”
[b]//给"struct name*(指针)"重命名为“pname_2”[/b]
结构体指针的使用:
#include <stdio.h>
typedef struct stu{
int sid;
char ch;
}stu_t;
typedefstu_t* p2stu_t;
int main(){
stu_t a[10];
p2stu_t p =NULL;
p = a;
for(int i =0;i<10;i++){
printf("intput:");
scanf("%d",&p[i].sid);
}
for(int i =0;i<10;i++){
//输出:指针方式:
printf("output: %d\n",(*p++).sid);
//输出:下标方式:
//printf("output: %d\n",p[i].sid);
//输出:指针调用方式:
//printf("output:%d",(p++)->sid);
}
return0;
}
以下内容转自:http://zhidao.baidu.com/link?url=0UHlyzdAtf98axxSJnL14xypMzeDvajpQ1LV_Lv3PoouCMKppagTNhAyXpKpKNfqX0e-41cSn5dTxMhbSq5Zqq
1.struct name{
数据类型 变量名;
数据类型 变量名;
//int a;
//char ch;
};
2.struct name{
数据类型 变量名;
数据类型 变量名;
//int a;
//char ch;
}b1,b2,b3;//变量b1,变量b2,变量b3;
3.typedef struct name{
数据类型 变量名;
数据类型 变量名;
//int a;
//char ch;
}name1,*pname2;//给“struct name”重命名:"stu_t";[b]给“struct name*(指针)”重命名:"pname2";[/b]
4.struct name{
数据类型 变量名;
数据类型 变量名;
//int a;
//char ch;
};
typedef name name_1;
typedef name* pname_2;
//给"struct name"重命名为“name_1”
[b]//给"struct name*(指针)"重命名为“pname_2”[/b]
结构体指针的使用:
#include <stdio.h>
typedef struct stu{
int sid;
char ch;
}stu_t;
typedefstu_t* p2stu_t;
int main(){
stu_t a[10];
p2stu_t p =NULL;
p = a;
for(int i =0;i<10;i++){
printf("intput:");
scanf("%d",&p[i].sid);
}
for(int i =0;i<10;i++){
//输出:指针方式:
printf("output: %d\n",(*p++).sid);
//输出:下标方式:
//printf("output: %d\n",p[i].sid);
//输出:指针调用方式:
//printf("output:%d",(p++)->sid);
}
return0;
}
以下内容转自:http://zhidao.baidu.com/link?url=0UHlyzdAtf98axxSJnL14xypMzeDvajpQ1LV_Lv3PoouCMKppagTNhAyXpKpKNfqX0e-41cSn5dTxMhbSq5Zqq
struct Data { int a,b,c; }; /*定义结构体*/ struct Data * p;/*定义结构体指针*/ struct Data A = {1,2,3};/*声明变量A*/ int x;/*声明一个变量x*/ p = &A ; /*让p指向A*/ x = p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/ /*由于此时p指向A,因而 p->a == A.a,也就是1*/ 对于一开始的问题 p = p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是: struct Data { int a; struct Data * next; };/*定义结构体*/ ………… main() { struct Data * p;/*声明指针变量p*/ …… p = p->next;/*将next中的值赋给p*/ } 链表指针是C语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。 什么是变量?所谓变量,不要浅显的认为会变得量就是变量。套用我们院长的问话:“教室变不变?”变,因为每天有不同的人在里面上课,但又不变,因为教室始终在那,没有变大或变小。这就是变量:有一个不变的地址和一块可变的存储空间。正常情况下,我们只看到变量这个房间里面的东西,也就是其内容,但不会关注变量的地址,但是C语言的指针,就是这个房间的地址。我们声明变量就相当于盖了间房子存放东西,我们可以直接观看房子里的东西,而声明指针,就是相当于获得了一个定位器,当用指针指向某个变量时,就是用指针给变量定位,以后我们就可以用指针找到他所“跟踪”的变量并可以获得里面的内容。 那结构体呢?结构体就相当于是有好几个房子组成的别墅,几个房子绑定在一起使用。假设现在有很多这种别墅分布在一个大迷宫里,每间别墅里都有一间房子。里面放了另一个别墅的位置信息,现在你手拿定位器找到了第一栋别墅,从里面得到了你想要的东西(链表的数据部分),然后把下一栋别墅的位置计入你的定位器(p = p->next),再走向下一栋别墅……如此走下去,知道走到某地下一栋别墅信息没有了(p->next == NULL),你的旅行结束。这就是链表一次遍历的过程。
相关文章推荐
- C语言结构体之指针访问
- C语言结构体里的成员数组和指针
- C语言结构体里的成员数组和指针
- Go语言中结构体方法副本传参与指针传参的区别介绍
- C语言结构体里的成员数组和指针
- C语言结构体里的成员数组(长度为0)和指针---from coolshell
- C语言中 指针与结构体
- 【C 语言】结构体相关 的 函数 指针 数组
- C语言学习笔记 数组 指针 结构体
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表
- C语言程序设计 数组,结构体和指针练习题
- c语言结构体自引用指针
- C语言结构体里的成员数组和指针(C语言的一个隐晦角落——关于零数组)
- C语言程序设计 第七章 指针与结构体 指针数组 例题
- C语言结构体与指针实现病历查询功能
- c语言结构体 指针 - 变量 何时用->
- c语言结构体变量和结构体指针
- C语言结构体,C语言结构体指针,java对象引用,传值,传地址,传引用
- c语言结构体指针初始化
- 【C语言基础】结构体指针