我正在学习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)
这是警告信息.难道我做错了什么?
"警告:从不兼容的指针类型分配"
你声明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的指针触发编译器警告.