指针赋值不同的行为

dra*_*osb 2 c++ pointers

嗨,我尝试了以下代码:

int *a=&matrice[4][0];
cout<<*a<<"\n\n";

int *b;
b = &matrice[4,4];   
Run Code Online (Sandbox Code Playgroud)

matrice的定义如下:int matrice[5][5];并且我用一些正常的int值填充它.

第一个赋值有效,但第二个赋值没有错误:

a value of type "int (*)[5]" cannot be assigned to an entity of type "int * " .

我希望他们两个在编译时给我一个错误.

你能解释为什么会有这种不同的行为吗?

Del*_*ani 7

表达方式

&matrice[4,4]
Run Code Online (Sandbox Code Playgroud)

不做你所期望的,因为表达

4,4
Run Code Online (Sandbox Code Playgroud)

评估为4.这是逗号运算符的示例,它计算两个操作数并返回第二个操作数.