C语言深度剖析
#include <stdio.h>
intmain(int argc,char * argv[])
{
int a [3][2]={(0,1),(2,3),(4,5)};
int *p;
p=a [0];
printf("%d",p[0]);
}
请问打印出来的结果是多少?
为什么会是1呢?
{}与()有什么区别呢?
为什么问题会出现在括号上呢?
[解决办法]
(0,1)
逗号表达式,值是最后一个
[解决办法]
楼主搜:逗号表达式
printf("%d %d %d",p[0], p[1], p[2]);会输出1 3 5
[解决办法]
二维数组定义错了()应该是{}
#include <stdio.h>
int main(int argc,char * argv[])
{
int a[3][2]={{0,1},{2,3},{4,5}};
int *p;
p=a [0];
printf("%d",p[0]);
}
[解决办法]
int a [3][2]={(0,1),(2,3),(4,5)};//这里(0,1)只是在括号里执行逗号运算符,因此结果是1.
//同理(2,3)为3, (4,5)为5
//你可以依次打印出数组里所有元素看看
//请查看一下逗号运算符语法
[解决办法]
不是错 而且也不是定义 是初始化
初始化可以这样做的 那是一个逗号表达式
[解决办法]
#include <stdio.h>
int main(int argc,char * argv[])
{
int a[3][2]={(0,1),(2,3),(4,5)};
int *p;
p=a [0];
for(int i=0;i<3;i++){
for(int j=0;j<2;j++)
printf("%d",a[i][j]);
}
}
输出结果是135000,充分证明了逗号表达式的正确性,{(0,1),(2,3),(4,5)};只定义了前三个元素,1,3,5,后面三个元素没有定义,是随机数值!
[解决办法]
(0,1)
逗号表达式
{0.1}
才是赋两个值
[解决办法]
++
[解决办法]
()和{}不是一回事。
编译没错不表示逻辑没错。
[解决办法]
#include <stdio.h>
int main(int argc,char * argv[])
{
int a[5][5]={{1,2,3,4,5},{21,22,23,24,25},{31,32,33,34,35},{41,42,43,44,45},{51,52,53,54,55}};
int (*p)[5];
p = a;
printf("%d %d",p[4][2],a[4][2]);
}
输出结果 53 53