三九宝宝网宝宝教育教学论文

c语言结构体中的指针问题

04月07日 编辑 39baobao.com

[C语言指针变量问题]p2是一个指针变量,p2只能指向某个类型变量的地址,p2=&p1的意思是将p2指向p1的地址,而p1的地址是指针的指针,而p2只是个指针变量,所以语法上是错误的。printf那里也不能改成*p2,因...+阅读

第一个问题

感觉程序好像不对,首先在student结构体声明时,不要将name声明成char*,这表示一个char型指针,而char型指针是32位的,下面你从键盘输入字符串时,将字符串写进一个char型指针变量中,就会报错的,我在VC中试了就是这种情况。

char *name要表示一个字符串必须在声明时初始化,例如char *name="Xiao Qiang",否则就是个char型指针。

其次gets那不应该再加&了,因为name已经是指针了。

作者看来是对字符串、指针、数组之间的关系没搞明白。

解决办法:

声明name那里改成char name[50];gets那里去掉&

第二个问题:

因为你要算的是成绩的平均值,因此需要先将每个学生结构体中的科目成绩变量取出来啊,当然要.操作符了。注意参数传递的是结构体数组的首地址s,而每个学生结构体可以表示为s[i]。

这数组、指针、结构体关系的问题,作者还要认真思考分析和思考啊!

c语言结构体字符型指针赋值

#include

#include

#include

struct Test

{

int id;

char* name;

};

int

main(int argc, char **argv)

{

struct Test* test;

test = malloc(sizeof(struct Test));

test->id = 0;

test->name = malloc(sizeof(500));

strcpy(test->name, "hello world");

printf("%d %s", test->id, test->name);

return 0;

}基本上不就这样么。

指向结构体的指针做函数参数

#include "stdafx.h" #include struct person //person定义在这里,要在output()前面,要不然output()不知道person { char name[20]; int age; char number[20]; }*ptr,per[3]={{"LiLing",18,"110"},{"HuangQi",22,"250"},{"ShaMan",30,"360"}}; void output(struct person *p) { printf("Name:%s\nAge:%d\nNumber:%s\n",p->name,p->age,p->number); } int _tmain(int argc, _TCHAR* argv[]) { ptr=per; for(;ptr

C语言结构体指针问题

anwser1.

scanf("%d%d%d",&date.year,&date.month,&date.day);

不等价于

scanf("%d%d%d",p1.year,p1.month,p1.day);

因为scanf函数的一般形式为scanf(格式控制,地址表列),其中“地址表列”是由若干个地址组成的表列,可以是变量的地址或字符串的首地址。你的代码中p1指向结构体变量data,而*p1等价于data,既*p1.month=data.month,另外&和*两个运算符优先级相同,但按自右向左的方向结合,因此&*p1.month就等价于&(*p1).month,所以上面应该用scanf("%d%d%d",&date.year,&date.month,&date.day); 或者scanf("%d%d%d",&(*p1).year,&(*p1).month,&(*p1).day);

anwser2.

“.”为结构体成员运算符,在所有运算符中级别最高,其用法如:结构体变量名 . 成员名。别的用法没见过。

以下为关联文档:

c语言指针排序问题首先说明,这不是地址交换,而是值交换 temp是个定义的临时变量,用来存放中间结果。比如: a 与 b要交换值 那么,定义一个临时变量c,先保存a的值c = a 然后,把b的值赋给a:a = b最后把a...

C语言函数指针的调用问题?函数指针怎么用有函数: int fun(int a,int b); 要定义指向该函数的指针 对比指向 int a; 的指针 int *p; p = &a; p的定义是怎么来的? 首先要保证p是一个指针类型 写下(*p), 然后,考虑下p的基类...

c语言结构体字符型指针赋值#include <stdio.h> #include <malloc.h> #include <string.h> struct Test { int id; char* name; }; int main(int argc, char **argv) { struct Test* test; test = mall...

c语言指针怎么指向一个结构数组楼上都回答得这么复杂吗?我写简单一点的 struct str{ int n; int s; }; void main() {struct str a[2]={1,2,3,4};//声明一个结构数组并对数组a[0]中的成员n和s 分别赋值为1和...

c语言中的指针数组问题*p+i,是先执行*p,然后再加i 如int a[2]={1,2}; int *p; p=a;//p指向数组a,即指向数组a的第一个元素,即1 那么*p=1;*p+1=1+1=2;*p+3=1+3=4; *p[i],p[i]本身就是一个指针,*p[i]取p[...

C语言结构体指针变量初始化void RegList(LB *L) //初始化线性表(建立头结点,指针域置为空) { L=(LB *)malloc(sizeof(LB)); L->next=NULL; } 改成指针指针 调用的时候RegList(&k);就行了。 void RegList...

C语言结构体中struct和typedef struct有什么区别C语言结构体中struct和typedef struct区别为:声明不同、访问不同、重新定义不同。 一、声明不同 1、struct:struct可以直接使用结构体名字声明结构体。 2、typedef struct:ty...

c语言结构体中的一个char数组怎么赋值(1)用字符常量逐个初始化数组。例如:char a[8]={'i','l','o','v','e','y','o','u'};把8个字符依次分别赋给c[0]~c[7]这8个元素。如果在定义字符数组时不进行初始化,则数组中各...

c语言问题指针和数组c语言问题指针和数组,C语言指针求数组和:这是由于函数参数及运算符的计算顺序导致的,后置++运算符优先级大于*运算符,则表示此后置++运算是优先于*进行计算的,而后置++运算符是...

推荐阅读
图文推荐