大家好,今天小编关注到一个比较有意思的话题,关于c语言指针的初始化的问题,于是小编就整理了4个相关介绍c语言指针的初始化的解答,让我们一起看看吧。
c语言指针三要素?
显然,地址就像是要访问存储单元的指示标,在高级语言中形象的称为指针。
地址就是指针,指针就是地址。
c语言指针初始化这两种方式的区别?
*p=&a; 表示将a的地址赋值给*p这个值,在这里说明,p是指针的指针,*用来取值,*p之后取到的还是一个地址;例如:int **p = NULL;
p=&a;表示将a的地址赋值给p这个值,p是指针。例如:int *p = NULL;
C语言中的函数指针和指针函数,有什么区别吗?该如何理解?
函数指针和指针函数的区别:
1. 名字解析。这两个名词都是带有修饰的名词,可以略微扩展一下,在中间加个助词'的',函数的指针和指针的函数;现在看看,稍微清晰了一点,现在再扩展一下,加点修饰词--指向函数的指针和返回值为指针的函数;现在基本明确了。
2. 格式。
Type (* pFunc)(Type para); -- 函数指针
Type* Func(Type para); -- 指针函数
3. 先说指针函数,其实它就是普通函数,只不过返回值是指针(其实就是地址)而已,很多人因为恐惧指针,觉得它神秘!
4. 函数指针。这个有点复杂,首先*和pFunc先结合,优先级最高,因此pFunc就是指针了,同时这个指针后面带走一对小括号,里面还有参数,和函数的参数是一样的格式,因此这个指针就是函数指针,这个指针前面还有个类型-返回值类型!有人这里感觉很奇怪,指针怎么有返回值呢?
5. 指针有返回值,是因为这个指针讲来使用的时候,会指向一个格式和它自己类似的函数,因此这个指针的返回值和参数格式就决定了指向的函数的格式!
6. 函数指针要熟练,没有为啥,必须会,因为函数指针使用的时候体现的是C语言中的联编特点,也是后来C++语言中多态的雏形!
谢邀。
C语言中有数组指针和指针数组,现在又有函数指针和指针函数,初学者看到这里,可能会觉得C语言是一门喜欢咬文嚼字的编程语言。其实我也比较讨厌术语,因为它们总是能够加大初学者接受相关知识的难度。
不过话说回来,如果能够理解和掌握C语言指针的基本知识,哪怕第一次听说这些术语,应该也是能够理解其含义的,甚至,自己自然而然的也会这么称呼它们。
我们先回顾下数组指针和指针数组,题主可看看我之前的回答或者文章,应该会发现只要把“数组”像“int”一样看作是一种数据类型,数组指针和指针数组就具有很明显的区别了。
int 指针是指向 int 型数据,那数组指针就指向数组的指针。int 数组是一个存放 int 数据的数组,那指针数组就是存放指针的数组。在C语言中,函数也是一种类型,那函数指针就是指向函数的指针。
函数指针怎么定义呢?请看下面这个例子:
分析定义函数指针的表达式 void (* f )(char * ) 和分析数组指针的定义方式是相似的,() 的优先级高,所以 f 先和 * 结合,因此 f 首先是一个指针,什么类型呢?
* f 外面是一个函数原型的格式,参数是 char* ,返回值是 void,所以 f 是一个函数类型的指针。而 hello 函数恰好参数是 char* 类型,返回值是 void 类型,因此可以让 f 指向 hello。也可以写成:
可以通过函数指针调用它指向的函数,例如上面的 f(“Jim”),也可以以 (* f)(“Jim”) 的形式调用它指向的函数。应该注意到了,单独写 f 的时候,它是一个函数指针,并没有函数调用。想调用函数,需要加上“()”符号。
一个指针可以指向多个值吗?
不可以。
一个指针初始化只能指向一个地址,但释放了后可以再初始化另一个地址.
例如,指针变量p指向a的地址
当定义一个指针p时,CPU会在内存中分配一个字(16位寻址系统)给指针变量,未初始化时,这个字的内容是随机的,当有初始化时,如同本例那就将a的物理地址赋给指针p,指针变量p里面存储的是变量a的地址,同一时间p只能存储一个变量地址,也就是说p只能指向一个地址。
到此,以上就是小编对于c语言指针的初始化的问题就介绍到这了,希望介绍关于c语言指针的初始化的4点解答对大家有用。