一道C语言指结构指针的问题,不知哪错了,有三个错误,请高手帮忙修改一下(超级急)

来自:    更新日期:早些时候
关于C语言指针的问题,希望高手帮忙解答一下~

你要明白,指针变量有两个相关的值,一个是指针变量本身的内存地址,一个是该内存地址存储的数据,是另一个变量的地址。
如:
int *p;//定义一个指针变量,既然是变量,它本身就有地址,还没赋值,它里面的数据不确定。
所以*p=5;是错误的,还没初始化,指向的内存地址不确定,要把5存储到哪里的内存?
指针变量名p表示的是它的值,等于另一个变量的地址。

int a;
p=&a;//将a变量的地址存储在 p变量所在的内存空间。
char *pname[]={"wang","li","zhang","jin","xian"}; 这里定义的是一个指针数组,数组的元素是一个个字符串的地址,假设是{0xaa,0xbb,0xcc,0xdd}
将数组首地址作为实参传递给形参
在调用函数里面,因为是地址传递,所以可以改变数组元素的顺序,如假设变为{0xbb,0xcc,0xaa,0xdd}
形参改变不会影响实参的值没错,pname本身的值也的确没变,但是数组元素的顺序改变了,指向的字符串当然也不同了。
如果还是不懂就画个草图,关键是 时刻把数据在内存中的存储放在心上。

你定义了stu[4],只能用stu[0]到stu[3],你怎么用的是stu[1]到stu[5]

编译是没有问题,但你代码有错误。
1。
void output (SCORE*p,int n)
{
int i;
printf("\n%s%5s%5s%5s","Number","Engl","Math");
上句少一个参数。格式符有4,而相应变量只有3个。
2。
printf("English Mathema Physic plutonomy history:");
scanf("%d%d%d",&p->req.english,&p->req.mathema,&p->req.physics);
scanf("%d%d",&p->elec.plutonomy,&p->elec.history);
象这里最好是每个输入都有提示,这样才不会输错,
象上面两个输入函数,你输入时容易出错。
留心下你输入时有没出错。

1空格2 空格3回车
4空格 5回车

....我编译了都是通过的。。。。


一道C语言指结构指针的问题,不知哪错了,有三个错误,请高手帮忙修改一下(超级急)视频

相关评论:
  • 19140486719一个C语言指针问题。求大佬解答?
    魏顷谦在这个程序中,我们首先提示用户输入方阵的尺寸,然后输入方阵的元素。接着,我们通过遍历方阵的每一行,并使用指针指向每行对应列的元素,来求出方阵对角线元素之和。最后,我们输出结果。程序的输出示例如下:include <stdio.h> int main(){ \/\/ 方阵的尺寸 int n;printf("Enter the size of the ...

  • 19140486719一道C语言指针的问题 求解答 谢谢 !
    魏顷谦++ca和&c[1]:这两个值是相等的,他们都是存放b的地址。这里要理解的是,把c[]传入fun时并没有创建整个字符数组的副本,只是创建了指针c的副本,所以c和ca同时指向一个字符串。&ca[1]和&c[1]:这两个值也相等,他们和上面的其实是一个意思。只是若编写程序验证时,若先验证++ca则验证&ca[...

  • 19140486719C语言结构体问题
    魏顷谦第二个错 即使按照你所描述的想法 估计按照你写的程序 你会这样改 :pn->b\/n.a*(++pn)->b 你肯定认为 (++pn)->b 是指向 c (也就是5.0)的吧 你试着运行 同样错 结果为0 根本原因:知识点理解---指针类型(此处为结构体指针)struct x *pn 代表了pn是一个指向 str...

  • 19140486719一道与c语言指针有关的题
    魏顷谦printf("%s\\n", p-3); \/\/通过上面的分析,不难算出,p-3就是字符'6'的地址,这个语句就是输出从字符6开始的字符串,因此是6789。字符'9'后面是结束符'\\0'。

  • 19140486719c语言指针问题。。 若有int a[]={0,1,2,3,4,5,6,7,8,9,0},*p=a,
    魏顷谦A和D都是错的。不过A应该是印刷问题。 改成a[p-a]就对了。A p和a相等。 所以这个就是a[0]B *&抵消。 这个就是a[i]C p=a 这个也是a[i]D *(a+i)等效于a[i]. 再取值一次,类型不对。 等效于*a[i],这个是不合法的。

  • 19140486719C语言关于指针的一个小问题:int (*p)[4]书上说P是指向具有4个元素的...
    魏顷谦二维数组其实也是一个数组,你可以这样想 例如 int a[2][3]={{1,2,1},{3,4,3});你拆开看,可以作为int a[2]表示有两个元素的数组,后面的[3]表示,前面部分每个元素也是一个数组。这个数组还有3个元素。指向这个数组指针,int (*p)[3];也同样,同样拆开int (*p) 指向一个数组,后面的...

  • 19140486719c语言指针问题,求解答
    魏顷谦首先 函数指针的定义 A、D定义为:A 定义指向函数的指针pf,所指向的函数参数为空,无返回值 D 定义指向函数的指针pf,函数参数为int,char型(不符题意,题目为int,char*),无返回值 B、D的定义为:定义函数pf,函数参数为空,返回类型为void *(void 型指针)单从函数指针的定义可排除BCD。其次...

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

  • 19140486719求解一道c语言指针题,一美女询问,急!!!
    魏顷谦原本p指针是指向i但是第五行的那句“*s=t”使p指针转而指向了k

  • 19140486719C语言指针问题
    魏顷谦1、ptr赋值为arr地址后指向第一个元素,即元素6.2、*(ptr++) += 123;由于是右侧操作(递增后缀),所以先取ptr地址后再递增ptr,此时取得的地址还是第一个元素地址(递增后ptr指向第二个元素,也就是7,这是第一次递增),因此是对6+123=129,并保存原地址,即第一个元素地址,因此6被改为129...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网