c语言与程序设计笔记:指针篇 (1)

本文深入探讨了指针与数组的关系,包括间接访问表达式的概念、不同数组元素及其地址的表示方法,以及如何通过指针操作一维和二维数组。

基本概念:

  1)“*操作数”称为间接访问表达式,它的操作语义是引用以操作数为地址的变量。操作数可以是表达式,但其值必须是地址值。所以间访表达式的值是一个左值,代表指针所指的变量。而指针所指的类型就是间访表达式运算的类型。

    例:int y,x[3]={1,2,3},*pi=x;

      y=*pi++;是先对pi进行++操作,然后计算px,即对px进行间访操作,由于没有到达序列点,*pi还是x[0].再对y进行赋值,使y值为1.由于语句结束是序列点,这时才对pi进行自增操作,使pi指向x[1]。

数组指针表示:

一维数组中元素及元素地址表示


表示方式元素元素地址
用素组下标表示a[i]&a[i]
用指针p的下标表示p[i]&p[i]
用数组名的指针表示 *(a+i)(a+i)
用指针p的指针表示*(p+i)(p+i)
用数组名构成的地址表达式和下标表示(a+i)[0](a+i)
用指针构成的地址表达式和下标表示(p+i)[0](p+i)

原来数组还可以这么输入,我还以为scanf(“%d”,p[i])错了呢。
#include "stdio.h"
#define N 6
int main(void){
int i,a[N],*p[N],sum=0;
for(i=0;i<N;i++){
p[i]=&a[i];
scanf("%d",p[i]);
sum+=*p[i];
}
for(i=0;i<N;i++){
printf("p[%d]=%p,result=%d\n",i,p[i],*p[i]);
}
printf("sum=%d\n",sum);
getchar();
getchar();
return 0;
}


二维数组与指针数组:

#include  <stdio.h>
int main(void)
{
	int x0[5],x1[5],x2[5],x3[5],x4[5];
	int *p[5],i,j;
	p[0]=x0;p[1]=x1;p[2]=x2;p[3]=x3;p[4]=x4;

	for(i=0;i<5;i++){
		for(j=0;j<5;j++){
			if(i==j)
				p[i][j]=1;
			else
				p[i][j]=0;
			}
	}
		for(i=0;i<5;i++){
			for(j=0;j<5;j++)
				printf("%4d",p[i][j]);
				printf("\n");
			
			}
	getchar();
	return 0;
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值