11.7 知识总结

一 

1·数组指针和指针数组

数组指针:指向数组的指针;下列指针指向了含10个int类型的数组。

int a[10]={0,1,2,3,4,5,6,7,8,9};
int (*p)[10]=&a;

    利用指针输出数组指针的值。

for(i=0;i<10;i++){
printf("%d",*(*p+i));

 *p+i是数组a的首地址,解引用之后才能得到在该位置上的地址。

而二维数组也是一样

int a[3][3]{{0,1,2},{3,4,5},{5,6,7}};
int i;
for(i=0;i<3;i++){
printf("%d",a[1});
}

 这里的a[i]储存的是二维数组的地址,解引用之后得到地址上的值,所以数组指针可以用来表示二维数组中的值

int a[3][3]{{0,1,2},{3,4,5},{5,6,7}};
int (*p)[3]=a;
int i,j;
for(i=0;i<3;i++){
    for(j=0;j<3;j++){
	printf("%d",*(*(p+i)+j));
}
}

 2·指针数组:是一个存储着指针的数组。

int *p[10];

定义 int *p[10];。
如要将二维数组赋给一指针数组:

int *p[3];
int a[3][4]={{0,1,2,0},{1,2,3,0},{2,3,4,0}};
 int i;
 int j;
for(i=0;i<3;i++)
p[i]=a[i];
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
		
		printf("%d",*(*(p+i)+j));
	}
	}


这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。指针数组存放的是地址。所以可以用指针数组来表示二维数组。

结构体:把多个变量整合到一起。

struct a{
int b;
char c;
long d;
};

在定义之后 可以用这个结构体来定义变量,用结构成员运算符(.)来对其中每一个变量进行赋值或输出。

struct a{
int b;
char c
long d;
};
int main(){
    struct a n;
    n.b=1;
    n.c='d';
    n.d=5;
    printf("%d %c %ld",n.b,n.c,n.d);


}

此外,可以用 typedef来给结构体重命名。

typedef struct c{
char a;
int b;
doublec;
}t;

此时,struct a被重命名为t;

我们也可以把结构体作为形参传进函数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值