指针、数组

本文详细介绍了指针的基础概念,包括数据类型、地址分配、指针运算符的使用、内存访问方式、字节序判断、数值交换函数、函数返回值和指针操作的规则,以及在数组中的应用。
摘要由CSDN通过智能技术生成

1. 指针是用来装地址的数据类型,装 int 型的地址就叫整形指针,装 double 型的地址叫浮点型指针。整形是用来装整数的数据类型

2. 每一个字节都有独特的编号,对应不同的地址   

int i = 10;
int *p;
p = &i;

     p指针里面装的是整形变量的地址,变量有内存空间,其值可以改变

     int i = 10; &i 装的是变量i所占4个字节的首地址,通过变量名i 来进行读写访问

     *叫指针运算符,结合方向自右向左,它的作用是通过指针找到所指的变量来进行访问,这种访问方式叫做间接

4. 基类型指针指向将来要保存的数据类型

5. 64位系统下,指针是八字节的,32位系统下,指针是四字节的

7. 读取指针的顺序:

   (1)根据指针变量中的值到内存中定位

   (2)从定位开始向后偏移sizeof(基类型)字节

   (3)整体地将偏移好的那部分内存当做一个基类型变量来看

8. 运算符符号叠加时的用法

int i = 10;
int *p = &i;

printf("%p\n", &*p);
printf("%d\n", *&i);
printf("%p\n", *&p);
printf("%d\n", &*i);

      单目运算符自右向左,&*p 和 *&p都是输出i 的地址,*&i 输出i 的值,&*i 不能输出(* 右边的操作数只能是指针)

9. 判断电脑是小端还是大端排序

int main(void)
{
	int i = 1;
	char *p;
	p = (char *)&i;

	if(1 == *p)
	{
		puts("小");
	}
	else
	{
		puts("大");
	}
	return 0;
}

10. 交换数值的函数

void swap(int *a, int *b)
{
    int t = *a;
    *a = *b;
    *b = t;
}

11. 当指针置空时,不能进行访问,这是指针的一种状态

int *ret = binaryFind(a, len, -8);
if(ret == NULL)
{
	puts("not found");
}
else
{
	printf("%p, %d\n", ret, *ret);
}

12. 函数返回值不能返回数组,可以返回指针

13. 下面程序输出值为2,是基类型,两个指针无法进行加法,只能指针和int型进行加法,两个指针可以进行求差,但是其基类型必须相同

*p = a;
*q = a + 2;
printf("%d\n", q - p);

14. 指针在数组中的应用

void printArray(int *a, int len)
{
    int i;
    for(i = 0; i < len;++i)  
    {
       printf("%d ", *(a + i));
    }
    printf("\n");
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值