通过解除引用指针来获取值

Jus*_*ien -1 c pointers dereference

int main(int argc, const char * argv[])
{

    int age = 40;
    float gpa = 3.25f;
    char grade ='A';
    double fun = 2.000043f;
    char companyName[20] = "O'Brien Enterprises";

    int *pAge = &age;
    int *pGpa = &gpa;
    int *pGrade = &grade;
    int *pFun = &fun;
    int *pCompanyName = &companyName;

    printf("Value of variables through pointers:\n");
    printf("age = %i\n", *pAge);
    printf("gpa = %f\n",*pGpa);
    printf("grade = %c\n", *pGrade);
    printf("fun = %d\n", *pFun);
    printf("companyName = %s\n", *pCompanyName);


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,Xcode会回复大量的警告和错误.当声明和初始化除了age它之外的所有变量的指针时incompatible pointer types.并试图把它们打印出来的时候,它说为所有,但age,format specifies a different type.为什么是这样?当代码按原样运行时,我得到以下结果:

Value of variables through pointers:
age = 40
gpa = 0.000000
grade = A
fun = -2147483648
(lldb) 
Run Code Online (Sandbox Code Playgroud)

Cel*_*ada 5

你已经将它们全部声明为整数的指针,而它们应该是指向inta float,a char,a等的指针!

int *pAge = &age;
float *pGpa = &gpa;
char *pGrade = &grade;
double *pFun = &fun;
char **pCompanyName = &companyName;
Run Code Online (Sandbox Code Playgroud)