Multiply each element of an array by a number in C

seb picture seb · May 24, 2013 · Viewed 39.4k times · Source

I'm trying to optimize some of my code in C, which is a lot bigger than the snippet below. Coming from Python, I wonder whether you can simply multiply an entire array by a number like I do below.

Evidently, it does not work the way I do it below. Is there any other way that achieves the same thing, or do I have to step through the entire array as in the for loop?

void main()
{
    int i;
    float data[] = {1.,2.,3.,4.,5.};

    //this fails
    data *= 5.0;

    //this works
    for(i = 0; i < 5; i++) data[i] *= 5.0;

}

Answer

simonc picture simonc · May 24, 2013

There is no short-cut you have to step through each element of the array.

Note however that in your example, you may achieve a speedup by using int rather than float for both your data and multiplier.