C语言学习----指针

本文详细介绍了指针在C/C++中的基本概念,包括声明、取地址、解引用、算术运算、与数组和字符串的关系,以及函数指针的使用。还涵盖了指针与const的结合以及如何处理大小端问题。
摘要由CSDN通过智能技术生成

一、指针基础定义与使用

指针是一种用来存储内存地址的变量。  类型名 * 指针变量名

基础使用方法:

1.声明指针变量
#include<stdio.h>

int*p;//声明一个int类型的指针变量
2.取地址操作符&
#include<stdio.h>

int val=20;
int *p;
p = & val;//将val的地址赋给p
3.解引用操作符*
#include<stdio.h>

int val=20;
int *p;
p=&val;
int n=*p;//n现在的值为20,*p表示指针p所指向的变量的值
4.指针的算术运算
#include<stdio.h>

int arr[]={10,20,30,40};
int *p=arr;//指针指向数组第一个元素
p++;//指针现在指向arr[1]
int val=*p;
5.指针和数组
#include<stdio.h>

int arr[]={10,20,30,40};
int *p=arr;
for(int i=0;i<4;i++)
{
   printf("%d",*p);
   p++;
}
6.指针和字符串
#include<stdio.h>

char *s="Hello";
printf("%c",*s);
7.函数指针
int (*funcPtr)(int, int);//声明函数指针

int add(int a, int b) {
    return a + b;
}
int (*funcPtr)(int, int) = add;  // 将add函数的地址赋给funcPtr

int result = (*funcPtr)(3, 5);  // 调用通过函数指针调用add函数

 二、指针与const结合

1.指向常量的指针:
const int val=10;
const int *p;//声明一个指向常量int的指针(限定*p)
p=&val;
2.常量指针:
int val=10;
int *const p=&val;//声明一个指向int的常量指针(限定p) 
3.指向常量的常量指针
const int val=10;
const int *const p=&val;

三、指针+1和指针-1能力

1.指针+1能力

       取决于指针所指的数据类型,当对指针进行+1操作时,指针的值会增加一个存储单元的大小。指针+1的能力对普通变量,即增加的字节数为指针所指向类型的大小。指针+1的能力对数组时,指针+1将导致指针指向数组中下一个元素的地址

2.指针-1能力

       如果你有一个指针变量,比如int *ptr,那么ptr - 1表示将指针向低地址方向偏移一个单位,即指向前一个内存单元。这通常用于指针算术中移动指针位置。如果单独出现在表达式中,比如int *ptr = someArray - 1,那么-1实际上是一个补充,指示指针指向数组的前一个位置,而不是数组的第一个位置。

四、判断大小端问题

指针验证法:                                                                 低地址              高地址
int vai=0x12345678;                                                  0x78  0x56 0x34 0x12
char *p=(char*)&val;                                                 0x12 0x34 0x56 0x78
if(*p==0x78){小端}
else{大端}

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值