看看这个程序有什么地方不妥当的?总觉得不好
#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++编译器了 ......