一.逗号表达式:
形式:表达式1,表达式2
求解过程:先求解表达式1,后求解表达式2,整个逗号表示式的值是表达式2的值。
int x=(a=5,b=a--)
printf("%d %d %d",x,a,b);
最终输出结果为:5 4 5
a--,所以a=4
b=a--,b输出a--前也就是a的结果,所以b=5
x的值为表达式2的值,也就是b的值,所以x=5
二.数组分配空间:
数组分配空间不是申请一片空间,而是一串
定义一个a[3][2] 的数组:
int a[3][2]={3,2,1};
若访问a[0][2]也就是a[0][1]的下一个,即a[1][0] , 所以a[0][2]=1, 并且a[0][2]与a[1][0]的地址相同a[[0][3]指向下一个,由于未定义值,所以a[0][3]=a[1][1]=0。
#include<stdio.h>
int main()
{
int a[3][2]={3,2,1};
printf("%d\n %d\n %p\n %d\n %p\n %d\n ",a[0][0],a[0][1],&a[0][2],a[0][3],&a[1][0],a[1][1]);
int b;
b=a[0][0]/a[0][1]/a[0][2];
printf("%d",b);
return 0;
}
最终输出结果为:
3
2
0113F838
0
0113F838
0
1
三.struct 和 typedef struct 的区别:
struct:
struct Point
{
int x;
int y;
};
之后使用时:struct Point a;(必须要写struct)表示定义了一个结构体类型变量a。
typedef struct :
typedef struct Point
{
int x;
int y;
}Point , *P ;
之后使用时:Point a:表示定义了一个结构体类型变量a,P b:表示定义了一个结构体指针类型的变量b。