Click here to Skip to main content
14,668,658 members
Rate this:
Please Sign up or sign in to vote.
See more:
Hello everyone!!!
Today, I started using pointers in C language and I have a problem in the output.

I have this
[^]error[^]

I tried to change %d to %ls as it says ,but in the output it doesn't show me the addresses .
Where the problem is?
Thanks in advance !!!

What I have tried:

Code:
#include <stdio.h>

int main()
{
    int x;
    int *p;
    p = &x;

    *p = 75;
    printf("price of x = %d ,\t price of pointer p = %d ,\t address of x => %d ,\t address of pointer p = %d \n" , x , *p , &x , p);

    x = 999;
    printf("price of x = %d ,\t price of pointer p = %d ,\t address of x => %d ,\t address of pointer p = %d \n" , x , *p , &x , p);

    *p++;
    printf("price of x = %d ,\t price of pointer p = %d ,\t address of x => %d  ,\t address of pointer p = %d \n" , x , *p , &x , p);

    return 0;
}
Posted
Updated 20-Jul-20 20:45pm
v2

1 solution

Rate this:
Please Sign up or sign in to vote.

Solution 1

Try this:
printf("Price of x = %d\nPrice via pointer p = %d\nAddress of x = %p\nAddress pointed to by p = %p\n", x, *p, &x, p);
   
Comments
Nick_is_asking 20-Jul-20 14:45pm
   
It works. Thank you!!!
Nick_is_asking 20-Jul-20 14:52pm
   
One more question.If x = 8 and I write this: *p++; then I recieve this:
price of x = 9 , price of pointer p = -971355120 , address of x => 0x7ffec61a4c0c , address of pointer p = 0x7ffec61a4c10
=============================
.but I expected this:
price of x = 9 , price of pointer p = 9 , address of x => 0x7ffec61a4c0c , address of pointer p = 0x7ffec61a4c10

or am I wrong?
OriginalGriff 20-Jul-20 15:00pm
   
You are wrong: it's down to operator precedence. The "postincrement operator" (p++) is higher than the "dereference operator" (*p) so *p++ increments the pointer, not the content of the pointer, then returns the value that now points to. If you want to increment x via p, then you need brackets to force the order you want: (*p)++
Rick York 20-Jul-20 16:34pm
   
you should avoid writing expressions like that because they can be prone to error. It is better to first dereference the pointer (*p) and use that value. Then increment the pointer when you are done with its value.
Nick_is_asking 20-Jul-20 15:19pm
   
ok I understand, thanks!!
OriginalGriff 20-Jul-20 15:52pm
   
You're welcome!
CPallini 20-Jul-20 16:03pm
   
5.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100