指针初阶(2)

简介: 指针初阶(2)


5. 指针和数组

指针变量:指针变量就是指针变量,不是数组,指针变量的大小是4/8个字节,专门是用来存放地址的。

数组:数组就是数组,不是指针,数组是一块连续的空间,可以存放1个或者多个类型相同的数据。

两者之间的联系:

数组中,数组名其实是数组首元素的地址,数组名 == 地址 == 指针

当我们知道数组首元素的地址的时候,因为数组又是连续存放的,所以通过指针就可以遍历访问数组

数组是可以通过指针来访问的

#include <stdio.h>
int main()
{
  int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  int i = 0;
  int sz = sizeof(arr) / sizeof(arr[0]);
  int* p = arr;
  for (i = 0; i < sz; i++)
  {
    //printf("%p == %p\n", p + i, &arr[i]);
    printf("%d ", *(p + i));
  }
  return 0;
}

6. 二级指针

指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里?

这就是二级指针。

#include <stdio.h>
int main()
{
  int a = 10;
  int* p = &a;//p是一级指针变量,指针变量也是变量,变量是在内存中开辟空间的,是变量就有地址
  int** pp = &p;//pp就是二级指针变量,二级指针变量就是用来存放一级指针变量的地址
  
  //*(*pp) = 100;
  **pp = 100;
  printf("%d\n", a);
  //int** * ppp = &pp;
  return 0;
}

举个例子:

int main()
{
  char arr1[] = "abcdef";
  char arr2[] = "hello world";
  char arr3[] = "cuihua";
  char* parr[] = { arr1, arr2, arr3 };
  char** p = parr;
  return 0;
}

7. 指针数组

指针数组是指针还是数组?

答案:是数组,是存放指针的数组。

数组我们已经知道整形数组,字符数组,那指针数组是怎样的?

#include <stdio.h>
int main()
{
  char arr1[] = "abcdef";
  char arr2[] = "hello world";
  char arr3[] = "cuihua";
  //指针数组
  char* parr[] = { arr1, arr2, arr3 };
  int i = 0;
  for (i = 0; i < 3; i++)
  {
    printf("%s\n", parr[i]);
  }
  /*char arr[] = "abcdef";
  printf("%s\n", arr);*/
  return 0;
}
#include <stdio.h>
int main()
{
  int arr1[] = { 1, 2, 3, 4, 5 };
  int arr2[] = { 2, 3, 4, 5, 6 };
  int arr3[] = { 3, 4, 5, 6, 7 };
  //指针数组
  int* parr[] = { arr1, arr2, arr3 };
  
  int i = 0;
  for (i = 0; i < 3; i++)
  {
    int j = 0;
    for (j = 0; j < 5; j++)
    {
      printf("%d ", parr[i][j]);
      //printf("%d ", *(parr[i] + j));//和上面等价
    }
    printf("\n");
  }
  return 0;
}


目录
相关文章
|
1月前
|
存储 编译器 C语言
c语言进阶部分详解(指针初阶)
c语言进阶部分详解(指针初阶)
62 0
|
6月前
|
存储 C语言
【C语言】初阶指针
【C语言】初阶指针
|
1月前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(上)
C语言初阶⑦(指针初阶)知识点+笔试题
25 0
|
9天前
|
存储 编译器 Perl
指针初阶(1)
指针初阶(1)
12 0
|
1月前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(下)
C语言初阶⑦(指针初阶)知识点+笔试题
21 0
|
1月前
|
编译器 C语言 C++
初阶指针(C语言)
初阶指针(C语言)
|
1月前
|
存储 C语言
『C语言初阶』第七章 -初识指针
『C语言初阶』第七章 -初识指针
|
1月前
|
存储 编译器 C语言
C++初阶类与对象(一):学习类与对象、访问限定符、封装、this指针
C++初阶类与对象(一):学习类与对象、访问限定符、封装、this指针
48 0
|
1月前
|
C语言
C语言——初阶指针
C语言——初阶指针
39 0