获取变量地址需要使用取地址运算符 &
,因为我们需要告诉编译器我们想要的是变量存储的位置。例如,如果有一个整型变量 int a;
,那么 &a
就是获取这个变量的内存地址。
对于数组,当我们使用数组名时,它本身就代表了数组首元素的地址,所以不需要使用 &
。例如,如果有一个数组 int arr[10];
,那么 arr
就代表了这个数组首元素的地址,而 &arr
会得到整个数组的地址,其类型是指向整个数组的指针。
结构体也是类似的。当你有一个结构体变量,比如 struct MyStruct var;
,使用 &var
可以得到这个结构体变量的地址。但如果你有一个结构体指针,比如 struct MyStruct* p;
,p
本身就是一个地址,所以不需要再使用 &
。
总结一下:
- 对于基本数据类型的变量,使用
&
来获取它们的地址。 - 对于数组,数组名本身就表示数组首元素的地址,所以不需要
&
。 - 对于结构体 ,如果你有一个结构体变量,使用&获取它的地址;如果你有一个结构体指针,那么它本身就是一个地址
typedef struct Lnode{
int age;
string name;
struct Lnode * next;
}student;
void createlist(int n){
student * head=new student;
student * pre=head;
for(int i=0;i<n;i++){
student * p =new student;
cout<<"请输入第"<<i+1<<"个数据"<<endl;
cin>>p->age>>p->name;
pre->next=p;
pre=p;
p->next=NULL;
}
}
对于这里的
student * pre=head;
pre=p;
告诉我们指针只有在定义完之后才能赋值
* pre本身就是一个指针 它指向一个地址,pre就是一个地址。