指针

作者: 菜菜的程序猿 | 来源:发表于2020-10-29 09:00 被阅读0次

指针:一个变量,其值为另一个变量地址;

int *ip; //int 型指针
int var = 20;
ip = &var; //指针中存储int型变量var的地址

指针的算术运算

指针的递增

int var[3] = {10,20,30};
int *ptr;
ptr = var;
for(int i = 0; i < 10; i++){
  printf("%d\ n", *ptr);//依次输出 10,20,30
  ptr++;//移动到下一个位置
}

指针与数组的关系

可以使用指针的算术运算符来访问数组;

int var[3] = {10,20,30};
int *ptr;
ptr = var;
for(int i = 0; i < 10; i++){
  printf("%d\ n", *ptr);//依次输出 10,20,30
  ptr++;//移动到下一个位置
}

但在有些情况下,指针和数组不能互换;数组名为指向数组开头的常量,不能作为左值;

int var[3] = {10,20,30};
int *ptr;
for(int i = 0; i < 3; i++){
  *var = i; //合法
   var++;//不合法
}

C++传递指针给函数

C++允许传递指针给函数,只需简单声明函数参数为指针类型即可;能接受指针作为参数的函数,也能接受数组作为参数;

#include <iostream>
using namespace std;
double getAverage(int *arr, int size);

int main(){
  int A[3] = {1,2,3};
  double ave = getAverage(A, 3); 
}

C++指针数组

要让数组存储指向int或者char类型的指针;如下图为一个指向整数的指针数组的声明:ptr为一个数组,由MAX个整数指针组成;

#include <iostream>
int main(){
  int var[3] = {1,2,3};
  int *ptr[max];
  for(int i = 0; i < 3; i++){
    ptr[i] = &var[i];//赋值为整数的地址
    }
  for(int i = 0; i < 3; i++){
    printf("%d\n", *ptr[i]);//输出1,2,3
   }
}

用一个指向字符的指针数组存储一个字符串序列表,如下所示

#include <iostream>
 
using namespace std;
const int MAX = 4;
 
int main ()
{
 const char *names[MAX] = {
                   "Zara Ali",
                   "Hina Ali",
                   "Nuha Ali",
                   "Sara Ali",
   };
 
   for (int i = 0; i < MAX; i++)
   {
      cout << "Value of names[" << i << "] = ";
      cout << names[i] << endl;
   }
   return 0;
}

C++指向指针的指针

指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链;定义一个指向指针的指针时,第一个指针包含第二个指针的地址;第二个指针指向包含实际值的位置;

#include <iostream>
using namespace std;

int main(){
  int var;
  int *ptr;
  int **pptr;
  var = 100;
  ptr = &var;
  pptr = &ptr;
  
  cout << "var 值为 :" << var << endl; //100
  cout << "*ptr 值为:" << *ptr << endl; //100
  cout << "**pptr 值为:" << **pptr << endl; //100
  
}

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针

    普通指针指针的指针 数组指针 函数指针

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C 语言指针

    指针类型:指针的读取长度,指针的读取方向(大小端) 空指针,无类型指针,野指针 常量指针,指向常量的指针 http...

  • 二、C语言基础

    A、指针 指针的概念:指针变量 和 指针 的区别 ?答:指针变量是指针的标记,也可以通过指针变量的标记操作指针内存...

  • 王道程序员求职宝典(十一)指针与引用,树

    指针与引用 指针声明typedef别名类型检查void*指针指向指针的指针函数指针typedef简化函数指针定义初...

  • NDK02

    指针 指针概念 1 .指针变量和指针的区别?答: 指针变量是定义指针的标记,指针就是指向的内存地址。2 .函数指针...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

网友评论

      本文标题:指针

      本文链接:https://www.haomeiwen.com/subject/ybwqvktx.html