Accessing struct variables

SO I have been learning about structs and Lists, and I have a questions about ways to access a struct variable. Below is the original code (Thanks a bunch to Jessy for answering my other question and giving me this great example):

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class ObjectList : MonoBehaviour {

    struct CloneChildAtStart {

        public Vector3 clonePosition;
        public Quaternion cloneRotation;

        public CloneChildAtStart (Vector3 clonePosition, Quaternion cloneRotation) {
            this.clonePosition = clonePosition;
            this.cloneRotation = cloneRotation;


    List<List<CloneChildAtStart>> clonesChildrenAtStart;

    void Start () {
        clonesChildrenAtStart = new List<List<CloneChildAtStart>> ();
        List<CloneChildAtStart> cloneChildrenAtStart = new List<CloneChildAtStart> ();
        foreach (GameObject clone in GameObject.FindGameObjectsWithTag ("Clone")) {
            cloneChildrenAtStart.Clear ();
            foreach (Transform child in clone.transform) {
                cloneChildrenAtStart.Add (new CloneChildAtStart (child.position, child.rotation));
            clonesChildrenAtStart.Add (cloneChildrenAtStart);

    void Update () {
        for (int i = 0; i < clonesChildrenAtStart.Count; ++i) {
            for (int j = 0; j < clonesChildrenAtStart*.Count; ++j) {*
 _//Debug.Log (clonesChildrenAtStart*[j]);*_
_*<p><strong>I'm trying to figure out the different ways to use a struct, so here what I came up with below, and I want to know if the way I'm accessing my struct variables here is basically the same as the code above?</strong></p>*_
_*using UnityEngine;*_
_*using System.Collections;*_
_*using System.Collections.Generic;*_
_*public class ObjectList : MonoBehaviour {*_
 _*struct CloneChildAtStart {*_
 _*public Vector3 clonePosition;*_
 _*public Quaternion cloneRotation;*_
 _*CloneChildAtStart sceneObjects = new CloneChildAtStart ();*_
 _*List<List<CloneChildAtStart>> clonesChildrenAtStart;*_
 _*void Start () {*_
 _*clonesChildrenAtStart = new List<List<CloneChildAtStart>> ();*_
 _*List<CloneChildAtStart> cloneChildrenAtStart = new List<CloneChildAtStart> ();*_
 _*foreach (GameObject clone in GameObject.FindGameObjectsWithTag ("Clone")) {*_
 _*cloneChildrenAtStart.Clear ();*_
 _*foreach (Transform child in clone.transform) {*_
 _*sceneObjects.clonePosition = child.position;*_
 _*sceneObjects.cloneRotation = child.rotation;*_
 _*cloneChildrenAtStart.Add (sceneObjects);*_
 _*clonesChildrenAtStart.Add (cloneChildrenAtStart);*_
 _*void Update () {*_
 _*for (int i = 0; i < clonesChildrenAtStart.Count; ++i) {*_
 <em>_for (int j = 0; j < clonesChildrenAtStart*.Count; ++j) {*_</em>
 <em><em>_//Debug.Log (clonesChildrenAtStart*[j]);*_</em></em>
<em><em>_*<p>Thanks in advance!!!*_</em></em>

Jessy, thanks a lot for all this information, it is really helpful. I'm not yet very comfortable with constructors as well, which is why I tried to use your code in another way like above, so that I can understand better how to use constructors, and it makes more sense now. Basically what I'm doing is instantiating and destroying objects as I go, kinda like streaming, so I store their starting positions, then store the finish line position, and instantiate them in front of me as I drive by adding their starting position + finish line position * by the lap number. The stored object positions never change, but the instantiated ones I think a class is better suited for my needs then a struct if I understand correctly, since I do manipulate the position and rotation variables every time I instantiate one of the stored object.

And also thanks for the tips on naming conventions. I always wonder how to name my variables :) Your help is very appreciated!