"int" 类型的值不能用于初始化 "int *" 类型的实体

求dalao解答啊,C++作业,搞不懂ORZ
代码如下
#include
#include
using namespace std;
int main()
{
void swap1(int *p1, int *p2);
int a = 25; int b = 24;
int *ss1 = a; int ss2 = b;
swap1(&a,&b);
cout << ss1 << setw(8) << ss2 << endl;

}
void swap1(int *p1, int *p2)
{
int temp=1;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}

void swap2(int *p1, int *p2)
{
int *temp;
*temp = *p1;
*p1 = *p2;
*p2 = *temp;
}

void swap3(int x, int y)
{
int temp=1;
temp = x;
x = y;
y = temp;
}

void swap4(int *p1, int *p2)
{
int *p;
p = p1;
p1 = p2;
p2 = p;
}

这个错误源于该语句: int *ss1 = a;
你要是想给指针变量赋值应该这样:int *ss1 = &a;
你要是想为指针指向的内存赋值,请先让它指向一个内存,例如:int *ss1 = new int(); *ss1 = a;

int *ss1 的右值应该是一个地址,不应该是一个int型变量,可以选择new或者取地址赋值
 int main()
{
    void swap1(int *p1, int *p2);
    int a = 25; int b = 24;
    int *ss1 = &a; int ss2 = b;
    swap1(&a,&b);
    cout << *ss1 << setw(8) << ss2 << endl;
}

还有一个问题就是:使用了未初始化的局部变量“temp”
感激不尽