代码与分析
//导入strdup函数,用于字符串的复制#include <stdio.h>#include <string.h>struct Person {char *name;int age;int height;int weight;};void myprint(struct Person *p){printf("p address: %p \n", p);printf("&p address: %p \n", &p);printf("output name:%s \n", p->name);}int main(int argc, char* argv[]){struct Person m1={0};m1.name = "xiaoli";m1.age = 20;m1.height=14;m1.weight=30;struct Person *m2 = &m1;printf(">>>>>\n&m2 address: %p \n", &m2);printf("m2 address: %p \n", m2);myprint(m2);return 0;}
输出结果:
&m2 address: 0x7ffe8a48b728
m2 address: 0x7ffe8a48b730
p address: 0x7ffe8a48b730
&p address: 0x7ffe8a48b6f8
output name:xiaoli
从上面可以看出,指针传参后,其实是变成两个变量,都指向同一个地址。
一个是m2,一个是p。**
说明问题:
