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