‘壹’ 【求助】关于c语言结构体指针传递
一个问题是函数create没有返回值类型,再就是typedef定义结构体类型可以这么用吗?
typedef struct stu
{
int id;
int age;
}good,*p;
这个 *p是什么鬼 可以这么定义指针么 没这么用过。。。
假设可以 用*P 接收一个地址 也说不过去额 相当于把返回的地址赋给p指针所指向的内容了。
‘贰’ C语言指针和结构图MADDID
46 p q r为三个节点,且p->next = q; q->next=r
所以打印的p->num+q->next->num = 10+r->num=10+30=40
选D
47 经过typedef INTEGER就是一个新类型 等效于int *
p是INTEGER, 也就是int *
q是INTEGER*,也就是int **
选B
‘叁’ C语言中利用指针传递包含二维数组结构体的异常问题
creat函数里面的变量t在creat函数执行完毕后就已经消失了,你虽然保留了指向它的指针,但是,指针指向的内存已经不存在t了,所以结果不是你想的那样。你可以在mian里面定义t,然后把指向t的指针作为参数传给creat函数,然后在creat函数里面给它的成员赋值
‘肆’ c语言指针和结构体
楼主你好:
for(i=cnt;i>0;i--)
{/*P为临时结构体指针*/
p=(struct linklist *)malloc(sizeof(linklist));
scanf("%s%s%d",p->sno,p->sname,&p->sgrade);
p->next=ps->next;
ps->next=p;
}
你仔细看一下你的这段代码。
第一次循环的时候,p指向ps指向的地址,然后ps指向p,这样的结果是:ps--->p---->p->next
然后下一次循环,ps->next现在是p,你执行了“p->next=ps->next”那么p指向了p自己。。。而ps指向了p。在以后的循环中无法改变这一现象,从而造成了死循环,不知道你是不是能够明白,推荐你画一下图,画画就明白了。
还有最后的那个for循环,终止条件改为p=p->next,这个应该是粗心了吧?
看起来你是初学c,c中联表示比较难以理解的一部分,祝你好运,学业有成。
‘伍’ c语言结构体指针参数传递
有些编译器应该是不支持不写struct的, 结构体的话得把struct加上.
你说的这句话都是病句, 在程序不运行的情况下, 任何人也不知道参数有没有被传递过去.
你如果这程序能运行, 没报错. 但是在运行的时候有内存错误, 而传进来的参数又不是野指针, 那就是语言的问题. 但问题是语言没有问题.
‘陆’ C语言关于结构体指针的地址传递问题!!在线等
所有的
scanf("%d",&
在"%xxx"之后添加 \n
scanf("%d\n",&
‘柒’ 关于C语言中结构体传递指针的问题
不是结果不对,是你输出格式错了,double类型输出用%lf
你可以输出到小数点一位
printf("The average of the first course (Endilsh) is : %.1lf\n",aver);
‘捌’ c语言数据结构结构体指针的使用
insert 操作,参数是ListNode指针的指针,意味着在insert函数中,会修改ListNode指针的内容,所以传入指针的指针,以便在函数中对形参的修改可以通知影响实参。
paint操作,由于不会修改指针的内容,只是读取,所以传递指针的数值就行。
‘玖’ c语言版数据结构图的一些基本操作函数如下,有三个地方不了解,请各位帮帮忙
(1)问题三:
i=LocateVex(*G,va);
j=LocateVex(*G,vb);
*G不是指针,是指针G所指对象,就是ALGraph类型。程序中多处使用变量G,但是不同的地方,含义不同。在void CreateGraph(ALGraph *G)里面,G是一个指针,因此,引用其所指对象,要用*G。其他情况下,ALGraph G,G不是指针。
(2)第一:这个void DFSTraverse(ALGraph G,void(*print)(char*)) 为什么不能直接调用print函数,像调用DFS函数一样?可以的,使用函数指针是为以后任意扩展输出程序,以适应不同需要,并且可以作为参数传递。
(3)第二:FirstAdjVex(G,G.vertices[v].data)为什么要用顶点,用了之后又取位置,而不直接用位置,会有什么漏洞吗?不会
int FirstAdjVex(ALGraph G,VertexType v)
{
ArcNode *p;
int v1;
v1=LocateVex(G,v);
p=G.vertices[v1].firstarc;
if(p)
return p->adjvex;
else
return -1;
}
利用已经定义的定位函数LocateVex直接定位顶点v,然后直接读取其firstarc,很自然的过程。