C语言中*和&的区别-代码实现说明

来源:互联网 发布:杭州城西银泰mac在几楼 编辑:程序博客网 时间:2024/06/02 21:28
  1. *是指针运算符,可以表示一个变量是指针类型;也可以表示一个指针变量的所指向的存储单元,可以获取某个地址存储的值。

  2. &是取地址符号,既取得某一个变量的地址

int *p=&a;或 int *p;p=&a;

表示将a的地址存储在p内(取a的地址赋值给p)

int *b=&a;int c=*b;

表示将指针b指向(*b)的存储单元(a)赋值给c,此时的c只是一个新的变量,不能改变原有的a的值

例题代码:

//////////////////////////////////////////////////////结构体的应用                                     ////用结构体定义基本信息                              ////包括姓名、性别、年龄、联系电话、地址                ////设计输入、输出函数,参数为结构体指针变量             //////////////////////////////////////////////////////#include<stdio.h>#include<stdlib.h>//定义结构体typedef struct{    char name[8];    char sex[2];    int  age;    char tel[11];    char addr[20];}person;//输入函数void setData(person *p) //指针传递{    printf("请输入姓名 性别 年龄 电话号码 地址:");    //疑问:该处char[]类型去掉&,程序正常执行???    scanf("%s %s %d %s %s",&p->name,&p->sex,&p->age,&p->tel,&p->addr);}//输出函数void getData(person p)  //参数传递{    printf("姓名:%s\n性别:%s\n年龄:%d\n电话号码:%s\n地址:%s\n",p.name,p.sex,p.age,p.tel,p.addr);}void main(){    person *p;    p=(person*)malloc(sizeof(person));    setData(p);    getData(*p);    //*p取指针p所指的存储单元}
1 0
原创粉丝点击