Missing number, treated as zero. <to be read again> *

TeX error messages can be rather cryptic at times. Sigh.

The * character in

\multicolumn{2}{*}{$\bar{0}_m$}

is not legal. Basically, the second argument of \multicolumn must be a recognized column type, say, l, c, r, or p.


Since all entries in the table are math-y, I would use an array environment, and I'd place this array environment in an unnumbered display-math group, delimited by \[ and \]. This setup allows you to get rid of lots of $ tokens.

By the way, there is absolutely no need for any \multirow or \multicolumn directives.

enter image description here

\documentclass[12pt]{article}
\usepackage{array} % no other packages needed!
\begin{document}
\[
\renewcommand{\arraystretch}{1.5}
\setlength\arraycolsep{10pt} % default: 5pt
\begin{array}{|*{4}{c|}}
\hline
A         & I_m       & {}_m\bar{0} & \bar{b} \\ 
\hline
\hat{c}   & \hat{0}_m & 1           & d  \\ 
\hline
\hat{0}_n & \hat{0}_m & 0           & 0  \\ 
\hline
\end{array}
\]
\end{document}

You can avoid multirow and use a much more natural input syntax.

\documentclass[12pt, onecolumn]{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{arydshln}

\begin{document}

\[
\renewcommand{\arraystretch}{1.5}
\newcommand{\threerows}{\vphantom{\begin{array}{c}\\\\\end{array}}}
\begin{array}{|c|c|c:c|}
\hline
\threerows\mathmakebox[4em]{A} & \mathmakebox[2em]{I_m} & {}_m\hat{0} & \hat{b} \\
\hdashline
\bar{c} & \bar{0}_m & 1 & d \\
\hline
\bar{0}_n & \bar{0}_m & 0 & 0 \\
\hline
\end{array}
\]

\end{document}

I define a disposable \threerows command, just inside the math display, which reserves the vertical space of a three row array. For the horizontal spacing, I exploit \mathmakebox of mathtools.

enter image description here

You might want to use \bar{0}_{\mathrlap{n}} in the bottom left entry, to get

enter image description here


Your problem stems from

\multicolumn{2}{*}{<stuff>}

since \multicolumn expects a column specification in the second argument (and * isn't part of the valid set of options).

Regardless, you can use some details from How to add vertical and horizontal dashed lines in array and tabular enviroments? to replicate what you're after:

enter image description here

\documentclass{article}

\usepackage{array,arydshln}

\begin{document}

\begin{center}
  \renewcommand{\arraystretch}{1.5}%
  \begin{tabular}{ | >{\qquad}c<{\qquad} | >{\quad}c<{\quad} : c | c | }
    \hline
                &             &               &           \\
       $A$      &    $I_m$    & $_m{\bar{0}}$ & $\bar{b}$ \\
                &             &               &           \\
    \hdashline
     $\hat{c}$  & $\hat{0}_m$ &       1       &     $d$   \\
    \hline
    $\hat{0}_n$ & $\hat{0}_m$ &       0       &      0    \\
    \hline
  \end{tabular}
\end{center} 

\end{document}