C语言中关于指针的问题?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct stu
{

char *name, gender;

int score;
};

main()
{

struct stu a = {NULL, 'm', 290}, b;

a.name = (char *)malloc(10);

strcpy(a.name, "zhao");

b = a;

b.gender = 'f';

b.score = 350;

strcpy(b.name, "qian");

printf("%s, %c, %d", a.name, a.gender, a.score);

printf("%s, %c, %d", b.name, b.gender, b.score);
}

输出结果是什么?请大侠详解。小弟谢过了!!!

第1个回答  2014-08-26
你肯定编译过不了,“b = a” 是会报错的。两个结构体之间怎么可能这样写。
第2个回答  2014-08-26
qian, m, 290qian, f, 350
我都不明白,这是一个正确的代码,你为啥不自己编译一次呢?追问

编译过了,但是对结果不理解,为啥a.name=qian?

追答

因为在第7行就把"qian"给拷贝到b.name了.而且注意:stu中的是指针,不是数组.所以在b=a执行后,a中的指针与b中的指针就一样了.

strcpy:

声明: char * strcpy (const char*, const char*);

作用:把后面的字符串拷贝到第一个字符串首.

再说清楚点:就是一个内存区域,有俩指针指向它,那用其中一个对它修改再用另一个对其访问,结果是一样的.

就像一个女嘞俩男嘞追,一个男嘞送她一个项链,她带着去见另一个男的,当然那个男的也会看到那个项链喽~

本回答被提问者和网友采纳

c语言指针的赋值问题
在C语言中,指针是一个变量,其特殊之处在于它存储的是其他变量的地址,而不是值本身。指针使我们能够间接地访问和修改变量的值。指针的赋值过程 当我们为指针变量赋值时,实际上是将其指向一个变量的内存地址赋给它。这个过程分为两步:首先确定变量的地址,然后将这个地址赋给指针变量。例如,如果我们...

C语言指针问题
则表达式 *y+2的值是'5' 。分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。二、 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 'T'。分析:z是二维字符串数组首字符串“MAT”的地址,*z...

C语言指针问题?
调用结束后,所有实际参数的值均不会发生变化。但是swap3中*pa,*pb发生的交换(实际就是主函数中a和b的值发生了交换)

C语言中的指针问题到底是怎么回事~
3。 指针的值,或者叫指针所指向的内存区或地址。 指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。 指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针...

c语言问题,关于指针的问题
p是对指针指向的地址取值。比如我们定义int a=0;int *p=&a;那么p依然是一个int型变量,其值为变量a的地址。那么当我们写while(*p);printf。。。;时,这里的*p就是a的值。所以只要a的值等于0,就会执行printf,否则就一直循环。这样我们就能判断*p指向地址的内容为0。同理!*p就能判断*p指向...

c语言程序指针问题
分析:C语言中约定,指针变量是一个变量,地址为其值;数组名是一个常量指针,在 系统为数组分配存储单元时确定,其值是该数组首元素的地址。因此.数组名不能自增自减 ,也不能在赋值语句中作左值.例程中企图通过对a的改变使指针下移,指向欲输入数据的数 组元素。它的错误在于不了解数组名代表的是...

c语言指针问题
你也可以理解: p=*s; 即 p= *(s+0); 即 p=s[0]; p=&s[0][0];p 有了字符\/字符串存放空间。答案是一条一条判断的。它们与 p=*s 并无直接关系,只是考学生对char * 语法和char 地址计算的理解。例如: scanf("%s",*(*(p+1)+0)); 是错的,参数应当是 char 地址...

关于c语言指针的一些问题。
1、不是说系统64位它就是8字节,而是受限于地址总线的字节宽度,你的地址总线是64位的即指针就是8字节的,但是现在的64位个人pc多半是x86-64能兼容32位的应用程序。2、有,你64 位的机器,它的虚拟内存可以到8TB,如果你在64位机上装个32位的windows你会发现,我的个去……慢的要死(我犯过...

c语言指针和函数的问题
c语言指针和函数的问题 在下面程序一中想利用swap函数交换主函数中两个指向a和b的指针,但是这样是不能实现的,因为函数的形参不能改变实参,所以主函数中的那两个指针是没变的;但是程序二中sort函数中有跟... 在下面程序一中想利用swap函数交换主函数中两个指向a和b 的指针,但是这样是不能实现的,因为函数的形参...

关于c语言指针的一些问题
指针p 指向的单元 内容为 a [0] 3、a 是数组名的时候是正确的 他表示 a[0] = 指针p所指单元的内容。其实 理解指针的话 有一个很好的 方法 你可以把 指针变量p当做一个数组名 那么*p 也就表示 p[0] p也就表示指针 p 然后你就会知道该如何赋值了 。希望对你有所帮助 ...

相似回答