关于c/c++指针地址&问题

获取变量地址需要使用取地址运算符 &,因为我们需要告诉编译器我们想要的是变量存储的位置。例如,如果有一个整型变量 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就是一个地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值