下面C语言程序怎么理解?P是指向结构体的指针,却赋值了一个3行N列的数组的首地址什么意思呢? } C语言里结构体的问题。结构体定义指针类型是怎么回事?

作者&投稿:缪萧 (若有异议请与网页底部的电邮联系)
Complex为共用体 两个成员, x为int 占4个字节。 dat为结构体,占8个字节(dat.x和dat.y)

所以 Complex占8个字节。 前四个字节,x和dat.x共用, 后四个自己为y 。

赋值 p=(Complex*)&a[j][0] 这里应该加一个强制转换。
赋值后, 访问&a[j][0]上的数据 就是按照Complex格式进行访问

于是 p->x=p->data.x=a[j][0] p->data.y=a[j][1]

C语言,struct Student s[40],*p=s,这时,结构体数组指针p指向了首元素的地~

1.p++指向s[1],相当于s数组的首地址自增1。
2,s[1]的age成员,相当于先自增到s[1],然后去s[1]的age数据。
3.s[0]的age数据加个1,相当于先指向首地址的age数据,再在age的数值上自增1。
附:++在前,表示先自增后运算。
++在后,表示先运算后自增。
如有疑问,欢迎追问。

typedef 是重定义的意思,这里表示HuffmanCode是一个char**类型的代名词。
char*可以理解为指向一个字符串第一个字符的指针。
char**可以理解为字符串数组,
char **a = new char* [10];
for (int i = 0; i < 10; i++) a[i] = new char [30];
这就创建了一个a,a[n]代表第n+1个字符串,a[n][m]表示第n+1个字符串的第m+1个字符。

typedef struct
{
unsigned int weight;
unsigned int parent,lchild,rchild;
} HTNode,*HuffmanTree;
是用HTNode表示这个结构体,HuffmanTree表示这个结构体的指针类型。这样使用HTNode 定义的变量是结构体类型(空间为4*int=16),而用HuffmanTree定义的是可以指向这种结构体的指针(空间为long=4),HuffmanTree与HTNode*等价。
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode))
HT=(HTNode*)malloc((m+1)*sizeof(HTNode))
下面是调用的例子:
HTNode a;
HuffmanTree b;
a.lchild=0;
b=&a;
b->lchild=0;

calloc也用于动态分配内存,和malloc稍有区别,百度你就知道。

c语言P指向的数据是常量和自身是常量指针有什么区别?
答:指向的数据是常量,也就是说你不能修改它指向的数据 而常量指针,意思就是你不能修改这个指针指向哪里,但可以修改它指向的数据

C语言问题解释
答:讲解如下:x=sub(p,9,3);函数调用传参过程:t=p; x=9; y=3;由于p是指向funa函数的,那么t也指向funa函数了,那么 执行return (*t)(x,y);语句时,实际上是调用了funa函数,那么返回值是12,x=12。x+=sun(funb,8,3);函数调用传参过程:t=funb; x=8,y=3;传参后,指针t就指向...

初学C语言简单链表的问题,书上说p要指向head才能使用链表,我直接p=&a...
答:p2 = p1; /*如果节点开辟成功,则p2先把它的指针保存下来以备后用*/ if (p1 == NULL) /*节点开辟不成功*/ { printf("\nCann't create it, try it again in a moment!\n");return NULL;} else /*节点开辟成功*/ { head = NULL; /*开始head指向NULL*/ printf("Please input %d...

求C语言大佬看看这个程序该怎么理解
答:回答:可以a、b、c看成二维数组,例如a为a[date,next],其中date部分为数据,next部分为b的指针,所以图中p->date即输出a的数据,p->next就是b的指针,这时p=p->next就是把b的值针赋值给p,这时的p就是b,而不再是a,所以这时p->date就是b的date了,而p->next就是c。

c语言指针怎么理解,什么时候会用到指针,要注意哪些方面
答:在操作大块数据时,一般记录首地址(数组指针),然后根据首地址再加 上偏移量来访问整个数据,在你程序中写a[3]时,计算机就会取a数组对应 的首地址再加3个整型偏移量来访问相应数据。用指针p访问a数组的好处 是,不用每次计算a加多少偏移访问数据,而是使p指向某数据后可以p++ 或p--来访问前一个...

c语言,麻烦高手讲解过程,* P,* *k什么意思
答:即打印的还是为数组第一个元素2,打印结束后 p++; 这样p指向的就是数组的第二个元素 printf(“%d\n”,* *k);//因为k是指向p的地址的,而p此时已经指向了数组第二个元素,所以此时 **k == 4 程序的输出结果是___. //故而程序结果为 : 2, 4 ...

C语言,求大神指导,不能理解for循环里面的意思。(特别是if语句里的*q=...
答:指针p 是char 型,专门用于指向 字符 或 字符串。这里用来指向 c数组的元素。语句里 p 表示指向的 地址。p++, 是后缀加加,在表达式里 用原来的地址,出了表达式以后,指向 新的地址,新的地址 = 原地址+1,例如,原来指向 c[0] 的地址 &c[0]; 新的地址指向c[1]的地址 &c[1]了。按...

c语言指针是什么意思!
答:指针其实是一个整形变量,与其它数据不同的是,它的作用是用来存储其它变量的地址。指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。

C语言程序设计?
答:p=a的作用是把a数组的首地址赋值给p指针。在执行完第一个for循环之后p的地址变了 如果没有第二个p=a的话,下面就输出不了a[0]~a[9]这10个数,输出的是未知地址的值,可能是任意值

C语言中,p,&p,*p有什么关系?
答:而这个幸运的销售员很快的卖掉了这套房子给C。现在公司要求对销售的房子必须包产到户,也就是说,现在必须提到x的时候能够管理到C。如果用程序表示上述内容的话就可以使用指针。首先定义一个指针p,让他指向地址A,地址A中住的是C,而x本来居住的地方的地址是B。OK,现在能知道p,*p,&p表示什么了...