c语言结构体指针的问题
请问各位大佬如下为何使用结构体指针运行会出错typedefstructCH{char*base;char*top;intstacksize;}SqStack,*Sq;ch...
请问各位大佬如下为何使用结构体指针运行会出错
typedef struct CH{
char * base;
char * top;
int stacksize;
}SqStack,*Sq;
char InitStack(){
Sq S;
S->base=(char)malloc(STACK_INIT_SIZE*sizeof(char));
if(!S->base) exit(error);
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return S->base;
} 展开
typedef struct CH{
char * base;
char * top;
int stacksize;
}SqStack,*Sq;
char InitStack(){
Sq S;
S->base=(char)malloc(STACK_INIT_SIZE*sizeof(char));
if(!S->base) exit(error);
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return S->base;
} 展开
1个回答
展开全部
Sq S;
这一行, 定义了 struct CH 的指针,但是没有实例化。
也就是你这个指针没有内容。会出现问题。
Sq S;
S = (Sq)malloc(sizeof(SqStack));
return S->base;
还有这一行, S->base;是一个 char * 类型的指针。 而你函数的返回值是 char。
32位系统中, 指针的大小为4Byte, char的大小为1Byte。
应该也会出现问题。
还有, 如果还有问题, 请一同添附错误的提示信息(编译时的)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询