首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言深度剖解

2013-01-23 
C语言深度剖析#include stdio.hintmain(int argc,char * argv[]){int a [3][2]{(0,1),(2,3),(4,5)}int

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>
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呢?
{}与()有什么区别呢?
为什么问题会出现在括号上呢?
……

二维数组定义错了()应该是{}
#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
                                 //你可以依次打印出数组里所有元素看看
                                 //请查看一下逗号运算符语法
[解决办法]
引用:
二维数组定义错了()应该是{}

不是错 而且也不是定义 是初始化 
初始化可以这样做的 那是一个逗号表达式
[解决办法]
引用:
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}
才是赋两个值
[解决办法]

引用:
(0,1)
逗号表达式,值是最后一个

++
[解决办法]
()和{}不是一回事。
编译没错不表示逻辑没错。
[解决办法]
引用:
明白了,谢谢各位。
但下面这个呢?
int a[5][5];
int (*p)[4];
p = a;
请问&amp;p[4][2] - &amp;a[4][2]的值为多少?

#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

热点排行