Your biggest problem is that you never actually call the function. Also, there's an error in your first for loop (assignment instead of condition). Though even then, this is a full square. Other problems: terrible formatting, abuse of {}s, unused char* argument, unused headers.
What your algorithm should do:
1. print '*' size times
2. print a '*', size-2 ' 's and another '*'
3. repeat step 2 size-2 times
4. repeat step 1.
// None of the includes are even used other than <iostream>
void hollowsquare(char *, int size);
int main()
{
int size;
cout << "Enter an integer between 1 and 20 to determine the size\n"; // What's the point of '\n' here? Unless it actually was intentional
cout << "of the side of the square.\n";
cin >> size;
return 0; // You never even call hollowsquare so obviously it doesn't do anything
}
void hollowsquare(char *, int size) // What is the char * supposed to be? It's never even used
{
int row(size); // Why not just use size, what's the point of assigning a new variable?
{ // Why would you put a bracket here? This isn't even a loop
for (int line = 1; row=size; row++) // Your making row equal to size, this isn't a boolean.. it should be row == size and what's the point of setting line to 1 when it's not even used?
{
for(int column = 1; column <= size; column++)
{
cout << "*";
}
cout << endl;
}
}
}
#include <iostream>
void DrawSquare( int iSize )
{
for ( int i = 0; i < iSize; i ++ )
{
for ( int i = 0; i < iSize; i ++ )
std::cout << "*";
std::cout << std::endl;
}
}
void main()
{
int iSize;
std::cout << "Enter an integer between 1 and 20 to determine the size";
std::cout << "of the side of the square.\n";
std::cin >> size;
DrawSquare( iSize );
}
Some of the stuff I commented on isn't really 'wrong' but there are better ways of going about it. For example, it's not really 'wrong' to put a new line at the end of the first output in main() but it's not really necessary either. Maybe on your screen it is necessary though to make it look good, I don't know.