指针

  • 指针变量  :存放的是地址
  • 普通变量 :存放的是数据
  • 定义指针变量:
  • 类型名 *指针变量名
  •  char *pa;//定义一个指向字符型的指针变量
  • int *pb;//定义一个指向整型的指针变量
  1. 取地址运算符和取值运算符

1.1如果需要获取某个变量的地址,可以使用取地址运算符(&):

char *pa = &a;

int *pb = &b;

1.2如果需要访问指针变量指向的数据,可以使用取值运算符(*):

printf("%c,%d\n",*pa,*pb);

#include<stdio.h>
int main()
{
	char a = 't';
	int b = 134;
	
	char *pa = &a;
	int *pb = &b;
	printf("a=%c\n",*pa);
	printf("b=%d\n",*pb);
	
	*pa +=1;
	*pb +=1;
	printf("now:a=%c\n",*pa);
	printf("now:b=%d\n",*pb);
	return 0;
}
输出结果:
a=t
b=134
now:a=u
now:b=135

 

2.避免访问未初始化的指针

/*未初始化的野指针,
	指针变量pa到底指向哪不知道,
	因此它的地址是随机的 ,
	把一个随机的地址进行赋值有可能会覆盖到系统内一些关键性代码*/
#include<stdio.h>
int main()
{
	int *pa;
	*pa = 123;
	return 0;
}

3.数组名是数组第一个元素的地址

4.指针的运算

当指针指向数组元素的时候,我们可以对指针变量进行加减运算,这样做的意义相当于指向距离指针所在位置向前或向后的第n个元素。

5.对比标准的下标法访问数组元素,这种使用指针进行间接访问的方法叫做指针法。

6.需要郑重强调的是:p+1并不是简单地将地址加1,而是指向数组的下一个元素。

7.数组名是一个地址常量,不能被改变 不能充当左值而指针变量可以是左值

8.C语言 的 lvalue用于识别或定位一个存储位置的标识符(左值同时还必须是可以改变的)

结论:数组名只是一个地址,而指针是一个左值

/*
计算字符串的长度 
*/
#include<stdio.h>
#include<string.h>
int main()
{
	char str[]="Chinese language!";
	char *target=str;
	int count=0;
	while(*target++!='\0') //++优先级比*(取值运算符)高,但是本条语句显示++前的target值 
	{
		count++;
	}
	printf("总共有%d个字符.\n",count);
	return 0;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值