c语言指针小问题 123124

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 是一个指针变量,是变量就有自己的地址,也可以取地址。指向指针的指针就是二级指针,还有三级指针等等的。