指向内存的指针

0 c pointers char

我正在学习C并且有一些问题.我正在试图为每个声明的变量打印内存插槽,但是当我为Char []声明指针时,它只是不起作用.

这是我的代码:

int main () {
    char a[3]; // this variable is my problem
    int b;
    float c;
    char d;
    int e=4;

    char *pachar; //A char type variable for the pointer.
    int *paint;
    float *pafloat;
    char *pacharr;
    int *paintt;

    pachar = &a; // when I try to assign the memory to the pointer, it shows a Warning message.
    paint = &b;
    pafloat = &c;
    pacharr = &d;
    paintt = &e;


    printf("%p \n",pachar);
    printf("%p \n",paint);
    printf("%p \n",pafloat);
    printf("%p \n",pacharr);
    printf("%p \n",paintt);

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

这是警告信息.难道我做错了什么?

"警告:从不兼容的指针类型分配"

das*_*ght 5

你声明a为一个数组char:

char a[3];
Run Code Online (Sandbox Code Playgroud)

Name a表示一个数组,可以将其解释为指向数组初始元素的指针.因此,&在分配a指针时不需要:

pachar = a;
Run Code Online (Sandbox Code Playgroud)

当你把一个地址a&a表达,你会得到一个指针的三个字符数组.尝试将指向数组的指针分配给指向char的指针触发编译器警告.