关于C语言结构指针方面

typedef struct Node
{
Elemtype data;
struct Node *prior;
struct Node *next;
}*DLNode;

DLNode head和DLNode *head有什么不同?

前面的相当于struct Node *head,是一个指向该结构体的一级指针。后面的相当于struct Node **head,是一个指向该结构体的二级指针。如果定义DLNode head, *head1; 可以做操作head1 = &head;使得二级指针head1指向一级指针head。追问

会不会有数组头地址的意思

追答

这个和数组头没什么关系吧,如果你使用DLNode定义一个数组,如DLNode tmp[10]; 那就是定义了一个数组,这个数组里面有十个对应该结构体的指针,就是个简单的指针数组。如何你先定义了一个结构体 struct Node tmp[10]; 然后DLNode pTmp = &tmp[0];这样的话pTmp可以做数组名使用的应该是这样。

追问

DLNode *head
然后用malloc开辟空间。为什么不用DLNode head开辟?

追答

既然你typedef了一个结构体的指针,就可以直接使用DLNode 变量名;去定义想用的指针了,感觉DLNode* 变量名;定义这种二级指针的用处不大,一般很少会用到,除非是调函数的时候作参数可能用。其他的一般就是用DLNode 变量名 = malloc();就可以了吧

追问

开辟指针的数组

会更少点空间吧

我 也不清楚,复杂

追答

说了半天也没太懂你到底要建一个什么东西。如果你就是要弄数据结构的话,看你的那个结构体那就是建一个结构体的链表呗,那就不用数组了,而且一般这种结构体也都是使用链表的方式建,不会使用数组,因为数组是死的,链表可以随时的添加删除。建链表的时候就是添加一个元素就去申请一个空间,然后把新加的元素放到链表里面,同样一个元素不想要了,就直接从链表中把那个元素拉出来,然后free掉就好了啊。如果是这种数据结构的话是用不到二级指针和数组什么的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-19
DLNode *head是一个可以指向结构体变量的指针.本身存的是一个地址.这个地址可能只占32位

DLNode head是一个结构体变量.本身存的是一串变量.一串变量是多少位,.....追问

错了吧

追答

。。。哪错了

追问

因为定义的时候是typedef struct node{}*DLNode
应该只能用DLNode定义指针

追答

对啊,是这个意思啊

定义一个指向结构体类型的指针啊

这个被指向的结构体里面的内容就是结构体定义过的那一堆东西

追问

二级指针

用来指针的数组之用

追答

你用了二级指针?

追问

数据结构双向链表,是这样用的吧

追答

那不叫二级指针

二级指针是说指向指针的指针,对链表好像也是。。。

不好意思,我数据结构没学好,可能不能给你帮助了

追问

这样啊

追答

二级指针比如int **p啥的。

本回答被网友采纳

C语言指针的作用有哪些
1、指针就是地址,它和数组联系起来,可以方便的取数组中的值。2、可以作为函数的引用。指针的本质:一种复合的数据类型。指针包括两个方面:一个是它本身的值,是一个内存中的地址;另一个是指针所指向的物,是这个地址中所存放着具有各种各样意义的数据。

c语言结构体函数指针怎么赋值
指针就是指向内存的某个地址的一个变量。结构体指针就是这个指针变量的值必须指向存放该结构体的内存位置。当这个指针没有任何指向时,可以赋值为null值,但是改指针不可使用,程序中应该做判断。下面是一些赋值演示。struct student{ int id;int score;} aaa;struct student *p = null;\/\/结构体指针p...

c语言中,头指针,表头指针,头结点,第一结点分别是什么???举个例子,谢谢...
头指针也就是表头指针 在单链表的第一个结点之前附设一个结点(是个结构体),称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向第一个结点的指针(即第一个元素结点的存储位置)。头结点的作用是使所有链表(包括空表)的头指针非空,并使对单链表的插入、删除操作不需要区...

C语言里结构体的问题。结构体定义指针类型是怎么回事?
1、typedefchar**HuffmanCode实际上是typedef(char*)*HuffmanCode。写成这种形式更好理解,**HuffmanCode是指向指针的指针,这里也可以理解为是指向字符串的指针,因为char*字符数组相当于字符串。2、*HuffmanTree表示指向结构体HTNode的指针,HTNode是typedef语法指定的结构体的别名,然后*HuffmanTree是在定义...

C语言的结构体及指针
简单理解下,就是说把一些有内在联系的不同变量放在一起封装成一个整体,这就是结构体。指针,其实就是一个存放地址的变量,指针可以指向变量,数组,结构体等数据所在的内存单元。指针就是用来通过地址去找数据的,只要你把该数据的地址给指针,那么当你用到指向这个数据的指针时就等于在使用该数据。

C语言结构体内的指针问题
当struct student_a st1=st;时只将结构体变量st中的指针name拷贝到了st1中的指针变量name,就是说只使st1.name和st.name同时指针了由st.name=malloc(100);动态分配的片区,并没有重新再为st1.name分配100个字节。你可以这样考虑:1.如果由malloc分配的堆片区可以再复制,那怎么释放?2.你可以用...

有关于计算机C语言的Pointer问题
在探讨计算机C语言的Pointer问题时,我们需要首先理解Pointer的基本概念。Pointer是一种存储变量地址的变量,它在C语言中扮演着至关重要的角色。让我们逐一解析这六种情况,以更直观的方式理解Pointer。1. 定义一个整型变量k,并将k的地址赋给指针t。这表示我们创建了一个指向整型变量的Pointer,可以用来...

C语言 结构体指针的内存情况
struct A));malloc的原型声明是void* malloc(size_t),在堆上分配指定大小的内存,并返回指向这块内存的指针。上面p和q都是指向这块内存空间的指针。实质上,指针是c、c++中的一种结构型数据类型,和结构体,共用体等一样,属于用户自定义数据类型。指针记录着指向的地址和目标的类型,可以相互赋值。

关于C语言中的指针问题?
同学你是没理解指针是什么意思。Root = NULL的意思是将Root指向一处空的位置,这时候Root里面的一切都是空的(没有开辟内存空间),当运行到Root->data.value的时候,程序尝试读取Root里面的data元素,这时候就会出现读取内存越界,因为Root指向的地方是空(没有分配内存)。

c语言中结构体中有数组和指针时,什么情况下用->什么情况用.
typedef struct { int a ;}TYPE ;使用结构体变量的成员时候用.如TYPE v ;采用 v.a= xxx;使用的是结构体指针指向的结构体的成员的时候用-> 如 TYPE *p ;p = &v ;采用p->.a = yyy ;总之,->前面一定是个指针, “.”前面是个结构体或共用体变量 ...

相似回答