指针c语言指向,指针c语言指向数组

kodinid 14 0

大家好,今天小编关注到一个比较意思的话题,就是关于指针c语言指向问题,于是小编就整理了3个相关介绍指针c语言指向的解答,让我们一起看看吧。

  1. C语言中指针是什么?
  2. C语言中指向变量什么意思?
  3. 指向整型数组的指针如何用?

C语言中指针是什么

在C语言中,指针是一种变量用于存储内存地址。它可以指向其他变量或数据位置。通过指针,我们可以对内存中的数据进行间接访问和操作

声明一个指针变量,需要使用特殊的语法来说明变量的类型是指针类型,并使用星号(*)来表示指针。例如,可以声明一个指向整数的指针变量如下:

指针c语言指向,指针c语言指向数组-第1张图片-安济编程网
图片来源网络,侵删)

```c

int *p; // 声明一个指向整数的指针变量p

```

指针c语言指向,指针c语言指向数组-第2张图片-安济编程网
(图片来源网络,侵删)

在上述代码中,`int *`表示是一个指向整数的指针类型,`p`是指针变量的名称。

C语言中指向变量什么意思?

C语言中指向变量是指一个包含另一个变量的内存地址的变量。它允许您间接访问另一个变量的值,而无需直接引用它。指向变量的语法是使用星号 () 后跟变量名。例如,如果 x 是一个指向整型变量 y 的指向变量,则x 将返回 y 的值。指向变量通常用于动态内存分配结构和链表等数据结构

指针变量是一个变量,它保存的是另一个变量的内存地址。

指针c语言指向,指针c语言指向数组-第3张图片-安济编程网
(图片来源网络,侵删)

你如果知道了这个指针变量保存的值,就可以知道它所指向变量的内存地址,于是就可以间接访问到那一个变量。


定义:指针变量类型 *指针变量名1, *指针变量名2, ... ;


例如:
int main(void)
{
int *p; /*定义*/
int a;
p = &a; /*把a的地址赋值到p中*/
*p = 1; /*间接访问a*/
return 0;
}

把指针作为函数传递,可以使函数可以访问函数外部的变量,例如:
void swap(int *a, int *b)
{
int c;
c = *a; *a = *b, *b = c;
}

指针也可以用于传递数组,数组名本身就是一个指针:

void func(int a[], int n)
{ ..... }

指针还可以指向指针,指向结构体(struct),指向数组
int **p; /*指向int指针*/

struct XXX *p;

int (*p)[100]; /*指向一个int[100]数组,括号不可少*/

指向整型数组的指针如何用?

数组指针(也称行指针)

定义 int (*p)[10];

()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是10,也可以说是p的步长。也就是说执行p+1时,p要跨过10个整型数据的长度。

例:
int (*p)[4]; //该语句是定义一组指针,指向含4个元素的一维数组。
所以数组指针也称指向一维数组的指针,亦称行指针。

指针数组


定义 int *p[n];
[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。
如要将二维数组赋给一指针数组:
int *p[3];
int a[3][4];
p++; //该语句表示p数组指向下一个数组元素。注:此数组每一个元素都是一个指针
for(i=0;i<3;i++)
p[i]=a[i]
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。

这样两者的区别就豁然开朗了,数组指针只是一个指针变量,似乎是C语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。

C语言30天核心突破

到此,以上就是小编对于指针c语言指向的问题就介绍到这了,希望介绍关于指针c语言指向的3点解答对大家有用。

标签: 指针 数组 变量