When using a pointer to traverse an array, we can simply increment it to move by the byte size of its data type. Thus, with structures such as a multidimensional array, we don't have to worry about exactly indexing the row and column. We simply increment by the byte size to continue to get the next value till we hit null termination. Also, using pointers for incrementing/traversing an array is useful for when we don't know the size of the array (presuming we have a dynamic array), to which we can traverse till we hit null. With a for loop, we have a fixed size of the array, if we don't know the size, then pointer incrementing is more appropriate.