关于C语言里面的 '&','*',

#include <stdio.h>
#include <stdlib.h>
typedef int SElemType;
#define STE 10
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
void InitStack(SqStack &S);

void InitStack(SqStack *S)
{
S->base=(SElemType*)malloc(100*sizeof(SElemType));
S->top=S->base;
S->stacksize=STE;
}

void main()
{
SqStack B;
InitStack (&B);

}

就这个程序,里面的'*s',还有'&s',还有 s 我都快晕了....能解释一下吗?

第1个回答  2010-11-09
如果是c程序不是c++,你的程序是错的,在cpp里是可以用&表示引用的,但在你这里用还是错的,因为上面的那句void Insit...是函数原形的声明,必须与函数定义时一样才行
int stacksize;
}SqStack;
void InitStack(SqStack &S);//这个地方应该是void InitStack(SqStack *S);

void InitStack(SqStack *S)
{
S->base=(SElemType*)malloc(100*sizeof(SElemType));
S->top=S->base;
S->stacksize=STE;
}

&是取地址符号,*就是取指向变量的值;但在定义变量时*是做定义用的,表示是指针,比如
int a,*p;//这里的*号就是定义p是个指针。
p = &a ;//这里就是取 a的地址赋给p;也就是p变量放的是a的地址值
*p = 100;//这里就是把p的值对应的地址的那块内存赋上100;因为p的值是a的地址,所以实际上这里就是把a赋上100;之后a就等于100;
第2个回答  2010-11-09
* 是指针符号
& 是引用符号
两个符号的用法类似,都是将变量的首地址传到被调函数里
至于后面跟什么形参名都无所谓,s行,a,b,c,d都行
第3个回答  2010-11-09
void InitStack(SqStack &S);这个是函数声明,说明该函数的参数必须是地址形式。

void InitStack(SqStack *S)这个是函数定义,给出该函数的参数是指针形式(其实也是地址形式)。
第4个回答  2010-11-09
&在C++中有2个意思
一个是取址的意思,就是提取地址,在使用过程中主要是赋值运算,他只能给指针赋值,例如int a=0,*b;b=&a;就是把a 地址给了指针b
另一个是引用运算符的意思,在C++中于变量共同使用变量的地址空间例如:int a=10;int &b =a;就是对变量a的引用,当b 的值改变时a 的值也会相应的改变,即若在加上一句b=20;这时a的值也会成20本回答被提问者和网友采纳
相似回答