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

  • Home
  • SEARCH
  • 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 8905619
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T02:26:27+00:00 2026-06-15T02:26:27+00:00

#include<stdio.h> int main() { int *previous, *current ; int a[5] = {1,2,3,4,5}; current =(int

  • 0
#include<stdio.h>

int main()
{
  int *previous, *current ;
  int a[5] = {1,2,3,4,5};
  current =(int *) a ;
  previous = current ;
  current = *( (int**) current ) ; //my question is on this line

  printf ("\nprevious is 0x%x and current is 0x%x \n ", previous , current ) ;
  printf ("\nprev+1 0x%x ,  prev+4 0x%x \n", previous+1 , previous+4 ) ;
return 0;
}

and the output is :

bash-3.00$ ./a.out

previous is 0xffffd0f8 and current is 0x1

prev+1 0xffffd0fc ,  prev+4 0xffffd108

My question is: “current” was previously pointing to the start of the array, before it was referenced and dereferenced back again. How does the following statement change the value of “current”?

current = *( (int**) current ) ;

Also, if I print *previous it will print 1 while *current will core dump. What is the reason for this behaviour?

  • 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-06-15T02:26:28+00:00Added an answer on June 15, 2026 at 2:26 am
    current = *( (int**) current ) ;
    

    First, you cast current to an int**, so the value stored in the sizeof(int**) bytes starting at &current are to be interpreted as the address of an int*. Then you dereference the pointer obtained from the cast. That means, the int** assumed to be stored there is followed, and the sizeof(int*) bytes at that address are stored in current.

    Now, current pointed to the first element of the array a, so the bytes stored at the beginning of a are copied into current. If sizeof(int*) == sizeof(int), the int value 1 stored in a[0] is then interpreted as an address. If sizeof(int*) == 2*sizeof(int) (the other common occurrence), then the pointer value is composed of the two ints 1 and 2.

    previous points to the first element of a, so dereferencing previous yields the value 1. Dereferencing current now tries to read an int from address 1 (it is undefined behaviour, so whatever else would happen wouldn’t violate the standard, but that’s the normal course of things), which normally isn’t accessible for the process.

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

Sidebar

Related Questions

#include <stdio.h> int main() { float a = 1234.5f; printf(%d\n, a); return 0; }
#include<stdio.h> int main() { printf(He %c llo,65); } Output: He A llo #include<stdio.h> int
#include<stdio.h> int main() { int a,b; a=a+b; printf(%d,a); return 0; } what should be
#include<stdio.h> void function(int); int main() { int x; printf(Enter x:); scanf(%d, &x); function(x); return
Code #include<stdio.h> int main() { int i; printf(%d \n,'\1'); printf(%d \n,'\022'); printf(%d ,'\555'); return
#include<stdio.h> int main() { char *s[] = { knowledge,is,power}; char **p; p = s;
#include <stdio.h> int main() { char read = ' '; while ((read = getchar())
#include<stdio.h> int main() { char a[5]=hello; puts(a); //prints hello } Why does the code
#include <stdio.h> int main(int argc, char *argv[]) { long* fp; while(1) { fp =
#include<stdio.h> int a[100]; int main(){ char UserName[100]; char *n=UserName; char *q=NULL; char Serial[200]; q=Serial;

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.