栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言指针部分(1)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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
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
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关于*和&之间的谜题

如: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函数中的数据填充所以打印出来的时数组的随机值

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/384915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号