c语言指针小问题:
1.既然指针p已经是一个地址了,那为什么还要有&p呢,这不是功能重复了吗?
2.既然已经有了p取地址内数据,那为什么还要有&p呢
因为还有指针的指针比如说 p如果表示字符串,而你需要一个字符串数组,那么就需要字符串的指针,也就是字符的指针的指针。
第一问:在C语言中,指针是一种变量类型,用于存储内存地址。当我们定义一个指针变量时,例如int* p;
,它会占用一定的内存空间来存储地址值。p
本身是一个变量,它存储了某个内存地址。
而&
操作符用于获取变量的地址。当我们使用&
操作符时,它会返回变量的地址。例如,&p
将返回指针p
本身的地址,也就是指针变量p
存储的内存地址。
所以,p
和&p
是不同的概念。p
表示指针变量本身的值,也就是存储的内存地址;而&p
表示指针变量p
本身的地址。
第二问:当我们使用&
操作符时,它可以用于获取变量的地址,而不是获取指针变量所指向的地址的值。
假设我们有一个整型变量x
,并且定义了一个指针int* p = &x;
,那么p
将指向x
的地址。当我们使用*p
操作符时,它将解引用指针,即获取指针所指向地址的值。也就是说,*p
将返回x
的值。
而&p
则是获取指针变量p
本身的地址,而不是p
所指向的地址的值。
所以,p
和&p
分别表示不同的概念,一个是指针变量的值(所指向的地址),一个是指针变量本身的地址。
指针p 是一个指针变量,是变量就有自己的地址,也可以取地址。指向指针的指针就是二级指针,还有三级指针等等的。