关于链表中定义问题 急!在线等
给部分代码帮我哦分析下 为什么能用linklist来定义 head=null和 定义 srlinklist不是代表指向结构体的指针吗 怎么成类型了{:5_111:}typedef struct node
{
int data
struct node *next
}sqlist,*linklist;
linklist creatlinklist()
{
linklist head==null;
linklist s,r;
} 这是类型重定义
typedef struct node
{
int data
struct node *next
}sqlist,*linklist;
linklist 相当于 struct node *(结构体指针,一种类型),所有用到linklist的地方可以用struct node *代替 *linklist带了 * 这个符号,这样定义出来的就相当于是指针了,在你的程序中
sqlist *Head; 和 linklist Head; 效果是一样的.
当你把 *linklist 中的 * 去掉之后,他定义的效果就跟 sqlist一样了. Mr.屎壳螂 发表于 2014-12-3 12:48
*linklist带了 * 这个符号,这样定义出来的就相当于是指针了,在你的程序中
sqlist *Head; 和 linklist Hea ...
指针怎么可以去定义一个变量呢 风之残月 发表于 2014-12-3 12:35
这是类型重定义
是不是因为有了 typedef 然后把
struct node
{
int data
struct node *next
}把这一块代码 命令另一个名叫*linklist 风之残月 发表于 2014-12-3 12:35
这是类型重定义
假如没有typedef就是一个指针 linklist就不是代表结构体类型 对吗 本帖最后由 Mr.屎壳螂 于 2014-12-3 13:26 编辑
woaini92887 发表于 2014-12-3 12:53
指针怎么可以去定义一个变量呢
typedef 是将一个数据类型,定义成另一个名字,可以说就是换个名字,
所以typedef最终定义出来的不是一个指针,更不是一个变量,它是一种数据类型,你说纠结的是*linklist看起来是一个指针,但最后他却可以用来定义一个指针.
然而实际上linklist它就是一个数据类型,而不是指针,
指示在typedef的一种特殊写法,
就像
typedef int A;
A s;
这个样写是合法的,A所定义的s是一个数组.
同样的,
你的定义方法定义
就相当一吧例子中的A换成了 *linklist
用linklist定义出来的就是一个指针.
又一个钻了牛角的人
linklist *head=null;
感觉应该是这样呀吧, head是一个指向linklist的指针吧;
至于 linklist s,r 这个是定义一个linklist结构体类型的变量
至于类型:
你可以定义int char作为类型,
为什么可以定义组合作为类型, ----------就当成是打包出售好了!!
好像可以这么理解吧!好像也没有可以纠结的地方啊! Mr.屎壳螂 发表于 2014-12-3 13:15
typedef 是将一个数据类型,定义成另一个名字,可以说就是换个名字,
所以typedef最终定义出来的不是一个指 ...
谢谢拉 我知道我那里想错了 {:5_106:}
还有一小问题 你觉得列子
typedef int A;
A s;
为啥不是这样写A s;
定义说明S 是一个含有4个元素的数组。
如果是A s;
只能说明s是数组 而没说是含有多少个元素的数组 woaini92887 发表于 2014-12-3 14:11
谢谢拉 我知道我那里想错了
还有一小问题 你觉得列子
typedef int A;
首先~~少年,A定义的是3个元素,不是四个..虽然第一个数确实是a,但是最后一个是a;你可以试试
.其次你说的那种定义s的方法也是不合法的.
你卡一看代码
#include<stdio.h>
typedef int A;
int main()
{
A b; //这种写法也是错的.
A c; //这种写法才是对的.
int s={1,2,3,4}; //这种写法是错的,因为只定义了3个元素.
int a;
a=0;
a=1;
a=2;
a=3; //可以定义a,但是最后输出会出错的.
printf("%d %d %d %d",a,a,a,a);
return 0;
}
你可以自己编译,运行试试~ Mr.屎壳螂 发表于 2014-12-3 16:22
首先~~少年,A定义的是3个元素,不是四个..虽然第一个数确实是a,但是最后一个是a;你可以试试
.其 ...
恩恩 那个我刚才打错了 是3个
是不是说明C是数组 后面还得赋值呀
比如:
A c;
c[]={1,2,3,4,5};还是说只能定义3个元素跟一样
{:5_105:}想搞清楚一点{:5_96:} woaini92887 发表于 2014-12-4 13:50
恩恩 那个我刚才打错了 是3个
是不是说明C是数组 后面还得赋值呀
比如:
那种赋值方法是错的,只能A c={x,x,x};
或者之后c c c一个一个赋值.
A定义的就是三个元素的数组,跟 c的效果一样的.
之后是可以分别写成ccc 的
页:
[1]