标题:指针值问题
只看楼主
chenzhaoxia
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2011-2-1
结帖率:50%
已结贴  问题点数:20 回复次数:4 
指针值问题
三元组.h
Status InitTriplet (Triplet T,ElemType v1,ElemType v2,ElemType v3){
T=(ElemType *)malloc(3*sizeof(ElemType));
if(!T) exit(OVERFLOW);
T[0]=v1; T[1]=v2; T[3]=v3;
printf("%d\n",&T);
return OK;
}
代码:
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define OVERFLOW -2
typedef int ElemType;
typedef ElemType *Triplet;
typedef int Status;
#include"三元组.h"
main(){
int v1,v2,v3,*T=0;
v1=522; v2=5211; v3=5877;
InitTriplet(T,v1,v2,v3);
printf("%d",T[0]);
}
编写完成后能通过编译,但是运行后显示停止工作。我用printf("%d",&T);获得了三元组.h和代码里面的指针,这两个完全不同,为什么?InitTriplet(T,v1,v2,v3);不应该是将指针值赋给三元组.h中的T了吗?他两个的值应该是一样的。
搜索更多相关主题的帖子: 三元 
2016-05-12 15:54
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
得分:0 
printf("%d",&T);有问题,要输出T的元素可以这样写:
for (int i = 0; i < 3; i++)
    printf("%d",T[i]);
printf("\n");
2016-05-13 11:32
chenzhaoxia
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2011-2-1
得分:0 
谢谢,我打的这个printf("%d",&T);是用来测试三元组.h中T的指针值,主函数中应该还有一个进行比较不过我删除了。现在遇到的问题是这个代码编译能成功,但是运行的时候显示已停止不能运行如果将主函数中的printf("%d",T[0]);删除后就没有问题。

没有永远成功
2016-05-13 19:56
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
得分:20 
回复 2楼 ldsh304
你只是在InitTriplet()中给T动态分配内存,
而在主函数中T只是一个int类型的指针,编译器并不能识别T[0]
2016-05-14 19:55
chenzhaoxia
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2011-2-1
得分:0 
回复 4楼 ldsh304
谢谢我明白了。

没有永远成功
2016-05-15 08:31
chenzhaoxia
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2011-2-1
得分:0 
回复 4楼 ldsh304
谢谢我明白了。

没有永远成功
2016-05-15 08:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464714-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012592 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved