c语言指针部分(1)

本章内容:

               1.什么是指针

               2.指针的定义

               3.指针的应用

               4.指针的运算

               5.指针与数组的关系

               6.指针和数组,函数的示例

               7.二级指针

1.什么是指针?

         计算机中所有的数据必须存放在内存中,不同类型的数据占用的字节不一样,例如,int占用了4个字节,char占用1个字节。为了能准确的访问这些数据,给字节编上了号码,编的号是唯一的,根据编的号码可以快速找到数据,我们称这些编号为地址,也就是指针。

最低的地址为0x00000000    最高的地址为0xFFFFFFFF

 注意:

       (1) 在当前计算机中数据通常都是小端存放

        小端存放是指数据的低位保存在低地址,数据的高位保存在高地址

       (2)*号在C中的含义:

 2.定义指针变量

指针变量其实与普通变量相似,不过要在变量名前加星号*

格式为  数据类型 *变量名:*号表示这是一个指针变量

 总结:指针就是 内存的地址,指针变量就是保存内存的地址。指针的大小在32位平台上是4个字节大小,在64位平台是8个字节   

指针变量自身的值存储的地址,指针变量所指的实体(解引用)

定义指针变量时,类型对指针变量起到两个作用  1)解析存储单元的大小   2)指针变量加1的能力

3.指针的应用

3.1值传递

#include<stdio.h>
void Swap(int a, int b)
{
	int tmp = 0;
	tmp = a;
	a = b;
	b = tmp;
}

int main()
{
	int a = 10;
	int b = 20;
	Swap(a, b);
	return 0;
}

3.2指针传递,指针和函数

指针的传递,根据地址的传递进一步进行值的传递

//判断当前计算机是大或小端存放
#include<stdio.h>
int main()
{
	int x = 1;
	char* p = (char*)&x;
	if (*p == 1)
	{
		printf("小端存放\n");
	}
	else
	{
		printf("大端存放\n");
	}
	return 0;
}

4.指针的运算:

     1)指针+-整型(不可以是浮点型)

     2)指针+指针

     3)指针-指针

4.1类型对指针+1的影响

 

1) 指针+1,就相当于指向下一个地址

指针的类型不同,加1的能力不一样

如:typename*p;

       p=p+1;会被编译器解释成:p=p+sizeof(typename)*1

2)指针和整型加减后的结果仍然是指针类型

4.2类型对指针解引用操作的影响

不同类型之间解引用操作必须要加上类型的强制转换

4.3指针-指针运算

 

 两个同类型指针,指向连续空间可以相减,减后的结果是数据元素的大小

当且仅当两个同类型指针变量指向同一数组中的元素时,可以用关系运算符>,==,!=等进行比较,比较规则是指向后面元素的指针高,指向同一元素的相等

4.4关于*和&之间的谜题

如:int a=10;int *pa=&a;

假设有一个int类型的变量a,pa是指向它的地址,那么*&a和&*pa,*&pa是什么意思

*&a:&a是变量a的地址,*是解引用操作,*&a就是变量a本身

&*pa:*pa是pa指向的数据(a),&(*pa)表示数据的地址等价于(&a),所以&(*pa)等价于pa

*&pa:&pa是指针的地址,对指针的地址进行解引用就是指针本身

失效指针 

由于数据在栈中的存放是连续的,在函数进行调用时,fun函数可能会被print_ar函数中的数据填充所以打印出来的时数组的随机值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值