Ⅰ c语言单链表的问题,请求高人指点啊!typedef char DataType; --- ListNode *p;LinkList head;
以typedef开头的是给已有数据类型定义一个别名,可理解为定义一个新的数据类型名。
所以 typedef ListNode *LinkList;是定义一个已有的数据类型( ListNode * )的一个新名:LinkList
并且是一个指针数据类型。ListNode *p;只是定义了一个指针变量,和LinkList head 定义指针变量一样。
即:ListNode* p;和LinkList p是相同的效果,注意后一个p前无“*”
Ⅱ C语言,线性表黑色的框。datatype是一个数据类型。为什么他这个定义成指针,不是就为指针分配内
没有啊, 这个书的意思是
struct SeqList
{
int MAXNUM;
int n;
DataType * element;
}
SeqList结构体内本身不放数据
用的时候再分配,而用int n来记录元素个数
比如
SeqList seq;
seq.element= (DataType *)malloc( 6 * sizeof(DataType ) );//要分配6个
seq.n= 6;
访问时,
DataType data= seq.element[ 3 ];//3必须小于n, 这个时候就可以用数组方式访问
Ⅲ datatype
DataType顾名思义 就是数据类型
数据结构用的不算是C语言 而是类C
那么要使用C语言正确编译的话 我们就需要把这些映射成C语言的相应类型
这里DataType就映射成int整形
代码为typedef DataType int;
就是把DataType和int等价
在后面的
DataType a;
也就是相当于int a;
Ⅳ datatype 在C语言中怎么使用 后便可以跟什么数据类型 datetype *elem 什么意思
已知的数据类型有int,float,double,,等等。这里的datetype单独来说是没有含义的。
数据结构定义后。才具有意义。
例:typedef int datetype。这里的datetype就相当于数据类型int。
datetype a;就相当于int a;
你这里的
datetype *elem
就是定义datetype类型的指针变量。至于datetype是什么类型,就看你的定义了。
例1;
typedef struct datetype
{
int a;
datetype *next;
}
例2 :
typedef int datetype;
typedef float datetype;
typedef char datetype;等等
Ⅳ 有哪位高手能给解释一下C语言里 datatype * * *;的用法,比如所 char * * *a; 它与指针数组有什么关系
加入我们如下定义。
char ***p;
char *q[10];
p表示的是一个指针。 q表现的是一个数组。
所谓指针就是存放地址的一种变量,所以其实她可以指向任何类型。
如:p = 0x1234; 这样是没有问题的,管他0x1234这块地址里面放的是啥,我就可以指向他。虽然*p的时候编译器认为*p里面放的还是另外一块内存的地址,只要你使用的时候注意好就没有问题。如我们再定义一个int i = 1; p = (char***)&i; ((int)(*p)) = 2; 照样我们能把i的值变成2。只要你使用的时候注意好就行了。
我们再来看q,我们知道q是数组而且里面存放的是地址。数组的话就没有指针这么灵活。q不能指向任何东西,因为他是数组一块连续的内存,所以是恒定不变的。*q 和 q[0]是一个东西,表示的是数组的第一块内存里面的值,长度是4字节因为里面存放的是地址嘛。
我们来看p和q的关系,p = (char***)&q; 或者 p = (char***)q[0]; 前者表示p指向数组后者表示p指向的和q[0]指向的是同一个东西:
p+1对于前者就是指向q[1] 对于后者就是我们不可知只知道是q[0]指向的那个字符的后面第四个字符的地址。
写到这里如果你仔细看看的话应该能明白我说的。指针和数组就基本上明白了,指针是动态的、数组是静态的。
Ⅵ C语言求DataType的用法和意思
DataType在C语言里面是不存在的关键字,所以这个类型,你不知道是正常的。
看书要仔细,你看下面就写了
typedef int DataType,这句话的意思就是把DataType与int 指定为同一类型。
也就是说DataType就是int类型,有了typedef这话句,你把DataType当int理解就行了
Ⅶ c语言 typedef
第一,C语言没有直接用结构体名,所有结构体类型必须在前面加struct,比如
structVarTypes1value;//这才是正确写法
第二,在一个结构体里面包含本身类型,这个不成无限递归了?所以这种写法有误。
Ⅷ C语言中的datatype是什么
datatype是数据类型。C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
数据类型关键字:
1、short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
2、long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
3、long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
4、signed:修饰整型数据,有符号数据类型。(C89标准新增)
5、unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
6、restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)
(8)c语言datatype扩展阅读
转换:
在算术运算和关系运算中如果参与运算的操作数类型不一样,则系统会对其进行类型转换,这是隐含转换,转换的原则就是将低类型的数据转换为高类型数据。
各类型从低到高依次为char,short,int,unsigned int,long,unsigned long,float,double。类型越高范围越大,精度也越高。隐含转换是安全的,因为没有精度损失。
逻辑运算符的操作数必须是bool型,如果不是就需要将其转换为bool型,非0数据转换为true,0转换为false。位运算操作数必须是整数,如果不是也会自动进行类型转换,也是低类型数据转换为高类型数据。
赋值运算要求赋值运算符左边的值和右边的值类型相同,不同的话也要进行自动转换,但这个时候不会遵从上面的原则而是一律将右值转换为左值的类型。
比如,int iVal; float fVal; double dVal;则dVal=iVal*fVal;计算时先将iVal转换为跟fVal一样的float型,乘法的结果再转换为double型。
Ⅸ C语言:typedef struct { DataType *base; DataType *top; int stacksize; }NODE; DataType是什么类型
DataType应该是写这段程序的人定义的一个宏。
#define int DataType;
如果是这个的话,那么DataType就是整型了。
这样写的话,只要通过修改int为别的类型,就能够实现对不同的数据类型进行栈操作了,而不用逐个把所有的int改了。
Ⅹ C 语言怎么判断传入数据的类型
通过约定参数类型或者约定参数格式,确定传入数据的类型。
1、 大多数情况下,参数类型都是确定的,在函数定义时就可以确定类型。此种情况下,不需要函数本身判断,编译器会做判断或转换。
如
voidfunc(intn);
声明这样的函数,参数为int型,当调用时如果实参不是int型,C编译器会尝试转换为int型,如果转换失败,则编译报错。
2、 对于参数个数和类型不确定的情况,也就是不定参数形式,一般增加一个格式字符串,通过格式字符串解析后续有几个参数,每个类型是什么。
典型例子为printf:
intprintf(constchar*fmt,...);
在printf中,后续参数类型及个数都是不确定的,printf会根据参数fmt中包含的格式字符串,来确定后续的参数类型。 比如传入fmt为"%s%d%lu",那么printf就会尝试在后续参数中读取三个值,类型分别为char *, int,和unsigned long。
除此外,也可以采用其他方式进行约定。