differnences between transform.position.x and transform.positon?

What I am really asking is "Is transform.position.x+=speed*time.deltatime ;and
transform.position += new Vector3(speed * Time.deltaTime, 0.0f, 0.0f); " are same?

Well, it highly depends on the language used. Your first line doesn’t work in C# as position is a property and therefore just a combination of a get and set method and Vector3 is a value type. This combination makes your first line pointless because you actually “read” the position through the getter and then you manipulate the x component of the returned copy. This has no effect on the actual position. In order to change the position you have to invoke the setter by assigning a new Vector3 value to the property.

That’s why your second line does work in C#.

You may have been stumbled upon the first line somewhere. This line does only work in UnityScript which was a proprietary language which had a syntax similar to Javascript. However UnityScript is not longer supported in the latest Unity version. What UnityScript actually did was when you wrote a line like this:

// UnityScript
transform.position.x += speed*Time.deltatime;

It actually did this under the hood:

// C#
Vector3 tmp = transform.position; // invoke getter to get the current value;
tmp.x += speed*Time.deltatime;
transform.position = tmp; // invoke setter of position to assign the new Vector3.

Of course this line:

transform.position += new Vector3(speed * Time.deltaTime, 0.0f, 0.0f); 

is actually just a short hand for

transform.position = transform.position + new Vector3(speed * Time.deltaTime, 0.0f, 0.0f);