1 Востаннє редагувалося mamkin haker (19.10.2021 17:46:08)

Тема: С вказівники

#include <stdlib.h> 
#include <stdio.h> 
#include <math.h> 

int main() { 

    int a = 1; 
    float b = 2; 
    double c = 3; 

    int *p1 = &a; 
    float *p2 = &b; 
    double *p3 = &c; 
    void *p4; 

    printf("a: int: start address %p extent %ld\n",&a,sizeof(a)); 
    printf("b: float: start address %p extent %ld\n",&b,sizeof(b)); 
    printf("c: double: start address %p extent %ld\n\n",&c,sizeof(c)); 

    printf("p1: pointer: start address %p extent %ld\n",&p1,sizeof(p1)); 
    printf("p2: pointer: start address %p extent %ld\n",&p2,sizeof(p2)); 
    printf("p3: pointer: start address %p extent %ld\n\n",&p3,sizeof(p3)); 

    printf("p1: %p related value %d\n",p1,*p1); 
    printf("p2: %p related value %f\n",p2,*p2); 
    printf("p3: %p related value %lf\n\n",p3,*p3); 

    printf("a=%d\tb=%f\tc=%lf\n",a,b,c); 
    *p1 = 5; 
    *p2 = *p2 * *p1; 
    *p3 = sqrt(*p3); 
    printf("a=%d\tb=%f\tc=%lf\n",a,b,c); 
    printf("*p1=%d\t*p2=%f\t*p3=%lf\n\n",*p1,*p2,*p3); 
    
    p1 = (int*) p2; 
    p3 = (double*) p2; 
    p4 = p2; 
    printf("p1=%p\tp2=%p\tp3=%p\tp4=%p\n",p1,p2,p3,p4); 
    printf("*p1=%d\t*p2=%f\t*p3=%f\t*(float*)p4=%f\n\n",*p1,*p2,*p3,*(float*)p4); 

    p1++; 
    p3--; 
    printf("p1=%p\tp2=%p\tp3=%p\n",p1,p2,p3); 
    printf("*p1=%d\t\t*p2=%f\t*p3=%f\n",*p1,*p2,*p3); 

    p1 -= 4; 
    p3 = (double*)&a - 1; 
    printf("p1=%p\tp2=%p\tp3=%p\n",p1,p2,p3); 
    printf("*p1=%d\t*p2=%f\t*p3=%lf\n",*p1,*p2,*p3); 
}

в стрічці 39 виводить дивні числа =(

2

Re: С вказівники

Якщо робити дивні речі - то й результати будуть дивні. Це зветься garbage in, garbage out.
От якби ви повикидали ті операції, які для вас не дивні, і залишили лише дивні, а потім ще й сформулювали, що саме вам у них дивного - то це мало б сенс обговорювати.

Подякували: mamkin haker1

3

Re: С вказівники

відповідь: я тупий тому що намагався засунути флоат в інт :3

4 Востаннє редагувалося cheappi386 (20.10.2021 09:39:42)

Re: С вказівники

mamkin haker написав:

відповідь: я тупий тому що намагався засунути флоат в інт :3

а що у вас за апаратна платформа де int та float займають різну кількість байт пам'яті ?

5

Re: С вказівники

cheappi386 написав:
mamkin haker написав:

відповідь: я тупий тому що намагався засунути флоат в інт :3

а що у вас за апаратна платформа де int та float займають різну кількість байт пам'яті ?

та це не у мене, це у одної людини з інтернету :D