c指针

简介: c指针

c指针


对于一个指针首先要知道它的类型是什么,指向什么

例子:


int *p //它的类型是int * , 指向的类型是 int 类型

int **p1 //类型是int ** ,指向的类型是 int *类型


对于上面来说,p++ = &p + sizeof(int) ,向后增加4个字节

p1++ = *(&p + 4) ,此时 再输出**p1,则就指向未知的地方了


指针中的优先级:()>后缀操作符()或者[ ]>*


例1:对于 int * p[3]


#include <stdio.h>
int main()
{
  int *p[20];   //首先看优先级[]>*,那么他就是指针数组,拥有20个int *的数组 
  int a = 1,b =2;
  p[0] = &a;  //数组中存放a的地址 
  p[1] = &b; 
  printf("%d,",*p[0]);  //输出时要进行指向 
  printf("%d",*p[1]);
  return 0; 
  //总结:其实这里就是一组数组中存放的是整型数据的内存地址
  //输出时要加*进行数据读取
}


例3:对于int ( * p)[2]


#include <stdio.h>
int main()
{
  int a[2][2] = {0,1,2,3};
  //二维数组指针 ,第一种获取地址方法 
  //int (*p)[2] = a;  //先看()中的是一个指针,再看外面int [2]是整型数组,则为 
  int (*p)[2];
  p = a;  //第二种方法 
  printf("%d,",(*p)[0]);
  printf("%d,",(*p)[1]);
  printf("%d,",(*p)[2]);
  printf("%d",(*p)[3]);
  return 0;
  //总结:实质就是一维数组,输出也要带*
}


例3: 对于int ( * p)(int,int)



#include <stdio.h>
int max(int a,int b)
{
  return a>b?a:b;
}
int main()
{
  //第一种
  int (*p)(int,int) = max;
  //第二种 
  //int (*p)(int,int);     //也可以用指针指向函数地址
  //p = &max;
  printf("%d",(*p)(4,5));
  return 0; 
}


相关文章
|
3月前
|
存储 C语言
C 指针详解
C 语言中的指针是一个强大而重要的概念,用于间接访问变量的存储地址。指针是一个变量,存储其他变量的地址,类型与其指向的数据类型相关。基本操作包括取地址 (`&`) 和解引用 (`*`)。指针使用前需初始化,可指向有效地址或为空 (`NULL`)。指针支持算术运算,可用于数组和函数。通过 `malloc` 和 `free` 可管理动态内存。多级指针允许存储指针的地址。使用指针时需注意初始化、防止内存泄漏及避免访问无效地址。掌握指针是精通 C 语言的关键。
49 13
|
4月前
|
存储 C++
一篇文章带你深入了解“指针”(下)
一篇文章带你深入了解“指针”(下)
|
6月前
|
存储 编译器 C++
C++中的指针
C++中的指针
35 1
|
7月前
|
存储 C语言
深入理解指针(1)
深入理解指针(1)
46 2
|
7月前
|
存储 数据处理 C++
C++中的指针:深入理解与应用
C++中的指针:深入理解与应用
|
7月前
|
存储
什么是指针
什么是指针。
43 5
|
7月前
|
程序员 C语言
指针
【2月更文挑战第5天】指针。
30 1
|
7月前
|
存储
什么是指针?
什么是指针。
49 1
|
7月前
指针(2)
指针(2)
34 0
|
7月前
|
存储 C++
浅学指针(3)
浅学指针(3)