c语言语法基础之——指针(字符、一维数组) 学习

指针理解:

  1. 指针也是一个变量;只能装地址,不能装常量;
  2. 指针一般用p、q、m、n 来表示,不用b表示;
  3. 指针的类型与它指向的变量的类型一致;
  4. 指针运算符: * 、 & ( * 代表指针;& 代表地址 )

int 占内存2个b
float 占内存4个b

普通变量指针

在这里插入图片描述

int a=3,b=4,d;
int *b=&a; // * 代表指针;& 代表地址
int *b=5; // 会报错,因为只能装地址,不能装常量
printf("%d",a);
printf("%d",*b); //要用到a的值得话,用 *b ; b 是 a 的指针;b 是 a 的地址;*b 表示该指针指向的变量的值
printf("%d",b); //要用到a的地址得话,用 b ,内存地址是个十六进制值;计算机内存一般以16进制来表示。b 表示该指针指向的变量的地址

int c=*b+1; // ;
printf("%d",c);

p1=&a; // 不能是 *p1=&a ,会报错
p2=&b;
d=*p1+*p2;
p2=&a;

p=&(a+1); // 错误写法

打印出:
3
3
22316

4
// 定义指针的两种方式
int a, *p; // 一
p=&a;

int a, *p=&a; // 二


指针版最大数:


int main(int argc, char *argv[]) {
	int a,*p=&a,i,max=0,*p1=&max;
	for(i;i<10;i++){
		scanf("%d",p);
		if(*p>*p1){
			p1=p;
		}
	}
	printf("最大数是:%d",*p1);
	
	
	
	return 0;
}

数组变量指针;

p指向谁的地址,此时就替代谁来操作;
在这里插入图片描述
注意点:
数组名本身是特殊的指针,是个常量,不能参加运算,比如:
int a[]={1,2} 、char a[]=“Hello W”
a --> 数组名本身,默认是数组第一个元素

指针p是个变量,比如:
*p=“Hello W”
在这里插入图片描述

int *p,i;
int a={1,2,3,4,5};
p=a;// *p=a[0]=1
p++; // 2
p=a+4;
printf("%d", *p); // 5  主要看指针指向哪,移到哪就代表哪个地方
p--; // 4

main() {
	// 斐波那契前12项之和  指针版 
	int *p,sum=2;
	int a[12]; // 一般都是12个元素;10、11 也可以,但是9就不行了,因为下边有一句*p=*(p-1)+*(p-2),指针是可以动的,这里可以扩充两个元素
	p=a; 
	*p=1;
	printf("第一项是 %d",*p);
	p++;
	*p=1;
	printf("第二项是 %d",*p); 

	p++; // 需要定位到从下标2开始,也就是第3项开始 ;或者for括号里写 p=a+2
	for(;p<=(a+11);p++){ // p<(a+11) 也可以写成 p<=a+11 
		*p=*(p-1)+*(p-2);
		printf("\n%d",*p); // a[i]
		sum=sum+*p;
	}
	printf("\n斐波那契数列前12项和=%d",sum);
 
	return 0;
}

指针与数组的关系:
二维数组一般用保留 i 的方式去处理;
一维数组用哪种方式都行。
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦桑尼亚奥杜威峡谷能人

感谢您的认可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值