读书人

看看这个程序有什么地方不妥当的?总觉

发布时间: 2012-03-20 14:01:11 作者: rapoo

看看这个程序有什么地方不妥当的?总觉得不好
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>


typedef struct SqStackTag
{
char *base;
char *top;
int stacksize;
}SqStack;

void InitStack(SqStack &s);
void Push(SqStack &s,char x);
char GetTop(SqStack &s);

void main()
{
char strTemp[]= "abcdefg ";
int len;
int i = 0;
SqStack strStack;
InitStack(strStack);
len = strlen(strTemp);
while(strTemp[i]!= '\0 ')
{
Push(strStack,strTemp[i]);
i++;
}


for(i = 0;i < len;i++)
{
strTemp[i] = GetTop(strStack);
}
strTemp[len] = '\0 ';
free(strStack.base);
printf( "%s ",strTemp);
}


void InitStack(SqStack &s)
{
s.base = (char*)malloc(100*sizeof(char));
if(!s.base)
{
exit(1);
}
s.top = s.base;
s.stacksize = sizeof(char);
}

void Push(SqStack &s,char x)
{
if(s.top - s.base > = s.stacksize)
{
s.base = (char*)realloc(s.base,(s.stacksize+1*sizeof(char)));
if(!s.base)
{
exit(1);
}
s.top = s.base + s.stacksize;
s.stacksize++;
}
*s.top = x;
s.top++;
}

char GetTop(SqStack &s)
{

return *--s.top;
}
这个是字符串倒序用Stack实现的.

函数入参用&在C语言中是不是不可以的,总觉得这样做不好

[解决办法]
函数入参用&在C语言中是不是不可以的,总觉得这样做不好
===========================
引用 相对来说,
比指针更“安全”一些(其实就是习惯问题)。

只要支持 C99 标准,
就可以使用 & 语法了。

一般的C++编译器都支持C99标准,
但是常用的 C编译器 没有支持 ~
不过,
现在好像都使用C++编译器了 ......

读书人网 >C++

热点推荐