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

  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所指的存储单元
}
  • 21
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值