指针是不是只指向变量的某个地址 指向变量的指针其含义是指变量的?

[更新]
·
·
分类:互联网
4734 阅读

指针是不是只指向变量的某个地址

指向变量的指针其含义是指变量的?

指向变量的指针其含义是指变量的?

变量的指针,其含义是指该变量的地址。
C语言用变量来存储数据,用函数来定义一段可以重复使用的代码,它们最终都要放到内存中才能供 CPU 使用。
数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存到底存储的是数据还是代码。当程序被加载到内存后,操作系统会给不同的内存块指定不同的权限,拥有读取和执行权限的内存块就是代码,而拥有读取和写入权限(也可能只有读取权限)的内存块就是数据。
CPU 只能通过地址来取得内存中的代码和数据,程序在执行过程中会告知 CPU 要执行的代码以及要读写的数据的地址

函数指针与指针函数?

指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。

指针在c 中用的很多吗?很重要?

简单地说指针就是指向变量和对象的地址。  指针的用途非常广泛,比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。还有在很多时候变量,特别是对象的数据量实在太大,程序员就会用指针来做形参,只需要传递一个地址就行,大大提高了效率。  以上还只是指针的初步应用,随着你在C语言学习上的逐步深入,你会发现更多的用途的。

C语言中指针数组和数组指针、函数指针、指向函数的指针等等该怎么理解?

要理解这些问题首先需要理解什么是指针和指针变量。
在C语言中我们可以认为指针就是地址,不过是某一个具体内存单元的地址。
如我们在c语言中定义了一个int型变量a:
int a;
那么计算机就会给a分配4个字节的地址(在vc 中,在某些版本的c语言中,可能是2个字节)来存放a的值。由于在内存中每个字节都有一个地址,那么哪个地址是a的地址呢?我们不能同时用4个地址来表示a的地址吧,所以在c语言中,我们拿这块空间(4个字节)的第一个字节的地址当作变量a的地址,也就是首地址。
然后我们在定义一个指针变量,如:
int *p;
再用取地址运算符把a的首地址取出来赋值给指针变量p,如:
pampa;
现在指针变量p里存放的就是a的地址,我们就称p是a的指针。
所以,指针数组是什么?
就是一个数组里,每个数组元素都存放的是指针类型的值,也就是地址值。而不是基本数据类型,如:整型、实型、字符型。定义一个指针数组的方法如下:
int *pa[10]
其中pa是数组名称,10为数组大小。
那么,数组指针呢?
根据上面所说的,指针就是一块空间的首地址。所以,数组指针就是——数组的首地址。在c语言中,我们可以拿数组名表示数组的首地址。我们可以如下所示,将一个指针变量指向数组:
int a[10],*p
pa
当然,由于数组的第一个元素是a[0],所以a[0]的地址也是数组的地址,所以,我们也可以这样写:
pampa[0]
这样,我们就可以说,p是数组a的指针。
至于函数指针,就是指向函数的指针,因为在c语言中,函数实际是放在一段内存中的,所以只要我们找到了这段内存的起始地址,也就找到了函数,所以我们也可以拿一个指针变量,存放函数的首地址,从而让一个指针指向某个函数。
定义并使用一个函数指针的方法如下:
int fun(int x) /* 声明一个函数 */
int (*f) (int x) /* 定义一个函数指针 */
ffun /* 将fun函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f fun
赋值时函数fun不带括号,也不带参数,由于fun代表函数的首地址,因此经过赋值以后,指针f就指向函数fun(x)的代码的首地址。
这个时候f就成为了指向函数的指针。
我们就可以像下面这样,直接通过指针来调用函数了:
c(*f)(a)/* 通过指针f来调用函数fun */
谢谢邀请,喜欢请关注我。