int main() { char **p = 0; // two levels of indirection char *q = 0; // one level of indirection char *p2 = 0; // one level of indirection char *q2 = 0; // one level of indirection p = q; // C4047 p2 = q2; return 0;

警告截图:

这个问题如果有时不注意就可能造成错误,如error C2040。

编译器警告(等级 1)C4047警告c4047:msdn给的解释是:“operator”:“identifier1”与“identifier2”的间接寻址级别不同指针可指向变量(一级间接寻址),指向另一个指向变量的指针(二级间接寻址)等。其实这里的间接级别不同,就是间接寻址级别不同:关于间接寻址寻址级别不同:例子:#include// C4047.c// c
今天写程序报错了,上网去查这个 错误 错误 C2040 “remove”:“stu *(stu *)”与“stu *(stu *)”的 间接寻址 级别 不同 查到了一个很让人震惊的点。 这是原楼主的问题 //用强制类型转换可以解决,但我想知道这是为什么错,第一次见到这 错误 #include <iostream> using namespace std; class test publ...
1、立即寻址:直接给出的操作数的寻址方式 MOV AX, 1234H MOV AX, [1234H] ;前者是立即寻址,后者是直接寻址  2、直接寻址:直接给出操作数所在的地址为寻址方式 3、寄存器寻址:以通用寄存器(A,B,DPTR,R0~R7)的内容为操作数的寻址方式。 B仅在乘除法指令中为寄存器寻址,其他指令中为直接寻址。 A既可以寄存器寻址,又可以
调试C程序,报错:warning C4047 : '=': 'CHAR16' differs in levels of indirection from 'char [2]' 代码如下: CHAR16 StrBuffer[3] = {0}; StrBuffer[0] = Key.UnicodeChar; StrBuffer[1] = '\n'; StrBuffer[2] = "G"; //报错! 当给StrBuffer赋值字符串"G"的时候报错。网上找到了答案: https://stacko