title: Error 1 Cannot implicitly convert type 'int**' to 'int*'. An explicit conversion exists (are you missing a cast?)
body: <p>I'm learning C and C# and this question is for C#. I looking at pointers at msdn and this code is not compiling, it gives the error:Error   1   Cannot implicitly convert type <code>int**</code> to <code>int*</code>. An explicit conversion exists (are you missing a cast?). What am I missing here?</p>
  
  <p>Here is the code:</p>
  
  <pre><code>    int ix = 10;
          unsafe
          {
              int* px1;
              int* px2 = &amp;ix;  **The error is on this line**
          }
  </code></pre>
  
  <p>EDIT:
  Here is the program in its entirety:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.IO;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  using System.Management;
  using System.Diagnostics;
  using System.Windows.Forms;
  using practice;
  
  class Program
  {
    public delegate bool ThisIsTheDelegate(int number);
    public delegate bool ThisIsAnotherDelegate(int number);
  
    private static string address;
  
    public static String Address
    {
        get
        {
            return address;
        }
        set
        {
            address = value;
        }
    }
  
      static void Main()
      {
          int[] someArray = new int[] { 1, 2, 3, 5, 6, 7, 8, 9, 0 };
          foreach (int number in someArray)
          {
              Console.WriteLine(number);
          }
  
          int integer = 98;
          string someString = "edited";
          string[] someStr = { "edited" };
          String[] anotherStringSomestr = new String[] { "edited" };
  
          var readWithLinq = from far in anotherStringSomestr
                             select far;
  
          foreach (var some in readWithLinq)
          {
              Console.WriteLine(some);
          }
  
          Program newPro = new Program();
          bool isEven1 = newPro.isEven(99);
          Console.WriteLine(isEven1);
          ThisIsTheDelegate newDelegate = newPro.isEven;
          Console.WriteLine(newDelegate(98));
          int[] numbers = { 1, 2, 3, 5, 6, 7, 8, 9 };
          List&lt;int&gt; evenNumbers = FilterArray(numbers, newDelegate);
          foreach(int integer1 in evenNumbers)
          {
              Console.WriteLine(integer1);
          }
          List&lt;int&gt; oddNumbers = FilterArray(numbers, isOdd);
          foreach (int integer1 in oddNumbers)
          {
              Console.WriteLine(integer1);
          }
  
          ThisIsAnotherDelegate anotherDelegate;
          anotherDelegate = number =&gt; (number % 2 == 0);
          Console.WriteLine("{0} is a even number", anotherDelegate(4));
  
          for (int i = 0; i &lt; someString.Length; i++)
          {
              Console.WriteLine(someString);
          }
  
          for (int i = 0; i &lt; someStr.Length; i++)
          {
              Console.WriteLine(someStr[i]);
          }
  
          Console.WriteLine(integer);
  
          SimpleStruct structss = new SimpleStruct();
          structss.DisplayX();
  
          M.x = 1;
          structss.x = 98;
  
          Console.WriteLine(M.x);
          Console.WriteLine(structss.x);
  
          M.structtaker(ref structss);
          M.classtaker();
  
          Console.WriteLine(structss.x);
          Console.WriteLine(M.x);
  
          M.x = 1;
          structss.x = 98;
  
          int ix = 10;
          unsafe
          {
              int* px1;
              int* px2 = &amp;ix;
          }
  
          int selection = 98;
          while (selection != 0)
          {
              mainMenu();
              Console.Write("Enter choice: ");
              selection = Convert.ToInt32(Console.ReadLine());
              switch (selection)
              {
                  case 0:
                      break;
                  case 1:
                      openSomething();
                      break;
                  case 2:
                      calculator();
                      break;
                  case 3:
                      coolestProgramEverALive();
                      break;
                  case 4:
                      make_to_do_list();
                      break;
                  case 5:
                      add_to_do_list();
                      break;
                  case 6:
                      readToDoList();
                      break;
                  case 7:
                      linq_and_arrays();
                      break;
                  case 8:
                      calendar();
                      break;
                  case 9:
                      linq_and_collections();
                      break;
                  default:
                      Console.WriteLine("Unkown selection. Try again");
                      break;
              }
          }
      }
  
      private static bool isOdd(int number)
      {
          return (number % 2 == 1);
      }
  
      private static List&lt;int&gt; FilterArray(int[] numbers, ThisIsTheDelegate newDelegate)
      {
          List&lt;int&gt; result = new List&lt;int&gt;();
  
          foreach (int item in numbers)
          {
              if (newDelegate(item))
                  result.Add(item);
          }
          return result;
      }
  
      private static void linq_and_collections()
      {
          List&lt;string&gt; names = new List&lt;string&gt;();
          names.Add("Billy");
          names.Add("Steve");
          names.Add("Casandra");
          names.Insert(0, "Johanna");
          names.Add("Sonny");
          names.Add("Suzanne");
          names.Insert(2, "Sid");
  
          var queryLinqUpper = from name in names
                               where (name.StartsWith("S") || name.StartsWith("B") || name.StartsWith("J"))
                               let namesToUpper = name.ToUpper()
                               orderby namesToUpper
                               select namesToUpper;
          foreach (var linqToUpper in queryLinqUpper)
          {
              Console.Write(linqToUpper + " ");
          }
          Console.WriteLine();
          M.WriteTextToConsole("Hello, world. Programming in C# is fun");
          char c = 'A';
          int count = 14;
          String str = new String(c, count);
          str.WriteTextToConsole();
          M.WriteTextToConsole(str);
  
      }
  
      private static void calendar()
      {
          Application.Run(new Form1());
      }
  
      private static void readToDoList()
      {
          var files = from file in Directory.GetFiles(@"C:\data", "*.txt")
                      select file;
          int number = 1;
          foreach (var file in files)
          {
              Console.WriteLine(number + ". " + file);
              number++;
          }
          Console.Write("What todolist do you want to read? Give me the name:");
          try
          {
              string name = Console.ReadLine();
              Address = Path.Combine(@"C:\data", name + ".txt");
  
              TextReader inFile = new StreamReader(Address);
              while (inFile.Peek() != -1)
              {
                  string line = inFile.ReadLine();
                  Console.WriteLine(line);
              }
              inFile.Close();
          }
          catch (Exception ex)
          {
              MessageBox.Show("Exception thrown!", "Error");
              Console.WriteLine(ex.ToString());
          }
      }
  
      private static void linq_and_arrays()
      {
          int numberOfElements;
          Console.WriteLine("Start by setting the int[] array.");
          Console.Write("How many elements are there in your array?");
          numberOfElements = Convert.ToInt32(Console.ReadLine());
          int[] array = new int[numberOfElements];
          for (int i = 0, j = numberOfElements; i &lt; numberOfElements; i++, j--)
          {
              Console.Write("Integers left to add {0}. Enter an integer:", j);
              array[i] = Convert.ToInt32(Console.ReadLine());
          }
          var arrayquery = from value in array
                           select value;
  
          foreach (var val in arrayquery)
          {
              Console.WriteLine("Value from array:{0}", val);
          }
  
      }
  
      private static void add_to_do_list()
      {
          Console.WriteLine("Which todolist do you want to modify?");
          listToDoLists();
          Console.Write("Enter name of todolist: ");
          string name = Console.ReadLine();
          Address = Path.Combine(@"C:\data", name + ".txt");
          String tempString;
          StreamWriter stream;
          stream = File.AppendText(Address);
          Console.Write("Enter your new ToDo: ");
          tempString = Console.ReadLine();
          stream.WriteLine(tempString);
          stream.Close();
          TextReader inFile;
          inFile = new StreamReader(Address);
          while (inFile.Peek() != -1)
          {
              string line = inFile.ReadLine();
              Console.WriteLine(line);
          }
          inFile.Close();
      }
  
      private static void listToDoLists()
      {
          int filenumber = 1;
          string[] filepaths = Directory.GetFiles("C:\\data\\", "*.txt");
          foreach (string file in filepaths)
          {
              Console.WriteLine(filenumber + ". " + file);
              filenumber++;
          }
      }
  
      private static void make_to_do_list()
      {
          string path, name;
          string yesOrNo;
          Console.Write("Enter name of todolist: ");
          name = Console.ReadLine();
          path = Path.Combine(@"C:\data", name + ".txt");
          TextWriter outFile = new StreamWriter(path);
          labelOne:  // else clause : unknown answer
          Console.WriteLine("Do you want to add something to todolist.Y/N?");
          yesOrNo = Console.ReadLine();
          if (yesOrNo.ToLower() == "y")
          {
              string line;
              int lines;
              Console.Write("How many lines?");
              lines = Convert.ToInt32(Console.ReadLine());
              for (int i = 0; i &lt; lines; i++)
              {
                  Console.Write("Enter a line of text: ");
                  line = Console.ReadLine();
                  outFile.WriteLine(line);
              }
              outFile.Close();
          }
          else if (yesOrNo.ToLower() == "n")
          {
              Console.WriteLine("You can close the application now.");
          }
          else
          {
              Console.WriteLine("Unknown answer. Try again");
              goto labelOne;
          }
      }
  
      private static void coolestProgramEverALive()
      {
          System.Diagnostics.Process.Start(@"C:\Users\KristjanBEstur\Documents\Visual Studio 2012\Projects\The_coolest_program_ever_alive\The_coolest_program_ever_alive\obj\Debug\The_coolest_program_ever_alive.exe");
      }
  
      private static void calculator()
      {
          System.Diagnostics.Process.Start("calc");
      }
  
      private static void openSomething()
      {
          System.Diagnostics.Process.Start("notepad");
      }
  
      private static void mainMenu()
      {
          Console.WriteLine("Main Menu");
          Console.WriteLine("0. Quit");
          Console.WriteLine("1. OpenSomething");
          Console.WriteLine("2. Calculator");
          Console.WriteLine("3. coolestProgramEverAlive");
          Console.WriteLine("4. Make todolist");
          Console.WriteLine("5. Add to todolist");
          Console.WriteLine("6. Read to do list");
          Console.WriteLine("7. Linq and arrays");
          Console.WriteLine("8. Calendar");
          Console.WriteLine("9. Linq and collections");
      }
  
  
      public bool isEven(int number)
      {
          return (number % 2 == 0);
      }
  }
  
  static class M
  {
      public static int x;
  
    public static void WriteTextToConsole(this string text)
    {
        Console.WriteLine(text);
    }
  
    public static void structtaker(ref SimpleStruct s)
    {
        s.x = 5;
    }
    public static void classtaker()
    {
        M.x = 5;
    }
    }
  
   class Test
   {
     static int value = 20;
     unsafe static void F(out int* pi1, ref int* pi2) {
    int i = 10;
    pi1 = &amp;i;
    fixed (int* pj = &amp;value) {
       // ...
       pi2 = pj;
    }
      }
   }
  
  struct SimpleStruct
  {
  public int x;
  private int xval;
  public int X
  {
      get 
      {
          return xval;
      }
      set 
      {
          if (value &lt; 100)
              xval = value;
      }
  }
  public void DisplayX()
  {
      Console.WriteLine("The stored value is: {0}", X);
  }
  </code></pre>
  
  <p>}</p>