Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7090937
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T08:07:06+00:00 2026-05-28T08:07:06+00:00

In coming from higher level languages, I’m trying to rebase myself by learning c.

  • 0

In coming from higher level languages, I’m trying to rebase myself by learning c. I’m trying to understand pointers and memory allocation (something I’ve never had to think about before).

Code I’m trying

#include <stdio.h>

int main()
{

    int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 };

    printf("\nShuffling...\n\n");
    shuffle(array, sizeof(array)/sizeof(int));

    int i;
    for(i = 0; i < sizeof(array)/sizeof(int); i++)
    {
        printf("%d\n", array[i]);
    }

}

int shuffle(int *shuffle_array, int length)
{
    int i, j, newArray[length];
    for(i = 0, j = length; i < length; j--, i++)
    {
        newArray[i] = shuffle_array[j];
    }

    shuffle_array = newArray;
}

First, this doesn’t work and I’m trying to figure out why the array isn’t reversed on printing.

Second, comparing the concept of in-place editing vs returning a new item within c using malloc() and free().

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T08:07:07+00:00Added an answer on May 28, 2026 at 8:07 am

    When your function exits then your locally defined array drops out of scope and hence no longer exists.

    You ought to memcpy back over the shuffle_array …

    memcpy( shuffle_array, newArray, length * sizeof( int ) );
    

    Furthermore you are also starting your read off the end of shuffle_array. The last element in the array is “length -1”.

    Edit: Reading off the end of the array won’t necessarily cause a problem. Its just that what you are doing is undefined behaviour.

    The reason you see the same data come back out as you put in is because you don’t actually change the data at all.

    TBH for reversing an array a much better algorithm is to start at both ends and swap the data over. You could do that as follows:

    for(i = 0, j = (length - 1); i < j; j--, i++)
    {
        int temp = shuffle_array[i];
        shuffle_array[i] = shuffleArray[j];
        shuffle_array[j] = temp;
    }
    

    This way you totally avoid the need for a seperate array and that final copyback. You also save a load of stack memory. Score all round in my opinion.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Coming from a Java background, I understand that __str__ is something like a Python
Coming from a C# Background I never used any pointers. I'm creating a vector
Coming from PHP with some Java Struts 2.0 experience any tips/tricks on learning GWT?
I have programming experience with higher-level languages, and have started coding in plain C
Coming from a non-web background I'm struggling with cookie uniqueness. When I read and
Coming from a .NET background I'm use to reusing string variables for storage, so
Coming from ASP.NET into WindowsForms app development I was expecting to see the similar
Coming from a PHP background, I'm used to writing small functions that return a
Coming from a Relational world things are obviously very different with the Azure Table
Coming from a C++ background, I am finding cloning of objects in C# a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.