c语言大神求教

如题所述

    因为for循环要从3循环到6共4次。第一次name+"    ",第二次me+"    ",第三次me+"    ",第四次e+"    "。所以最后结果是name    ame    me    e    。

    从值的效果看没有区别。但逗号表达式是“一条”语句,所以用不着用{}括起来——一条语句只有一个值即x++的值;而(*x)++;x++;是“两条”语句,要想让if满足条件时都执行就得用{}括起来,而且每条语句都有一个值。

    能自定义的类型不只一个:结构、联合、枚举等都是,它们的性质各不相同,所以用场也不相同。由于枚举和结构二者性质相差太远,无法比较有什么相同之处,当然也就无法说清它们的不同之处;只能掌握它们各自的性质特点,该用什么就用什么才能为我们带来方便——似乎答非所问,但只能这么说了。

    const int *f说明f函数返回的指针指向的内容是不可更改的。若省略const,至少会造成两个问题:一是函数f就可以返回一个非常量的指针——这当然不是设计者原先所希望的;二是f的主调函数也就可以随意改变返回指针所指的内容了——这一般也不是设计者的初衷。所以不能省略,省了就失去了这些制约。

    *p++——先取p指向的值,再让p指向下一个元素,即相当于*p,p++;或*p;p++;;

    *(++p)——先让p指向下一个元素,然后取这个元素之值;

    *++p——同*(++p);

    ++(*p)——先取p指向的元素之值,再给这个取出来的值+1并存储;

    (*p)++——独立应用时与++(*p)效果相同,在表达式中用+1前的值,而++(*p)用+1后的值;


温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-09
(1)s是字符串,也代表字符串的首地址,输出s会把整个字符串打出
s+i也同理,只是打印的首地址变化了
(2)第一种写法,计算第二个表达式值时x不变;第二种写法,计算第二个表达式前,x发生自加
(3)枚举和struct是两种不同的数据类型,比较其用法就会发现明显不同
(4)不可以,加了表示返回的是一个const指针
(5)关键是搞清++自增和*的优先级(++的优先级大于* ),++p和p++的不同
以*p++为例,先计算++,但是是后加(++在p的后面),所以先不加。所以*p++的意思是,从p指向的地址取出值,然后将值加1;

如果是先加(++在p的前面),*++p,p先自增(其内涵在不同环境下意义不同,不一定加1,也可能没有意义),然后从p自增后指向的地址取出值
第2个回答  2015-01-09
懒鬼。。万恶的十个字

求教C语言大神!!!最好讲一下理由,万分感谢
结果是cbade 原因如下:首先,主函数只进行了一个fun操作,其他的就是定义和输出,所以字符串(或者说字符数组)的调整完全由fun决定 fun中首先定义了x和y,因为s的长度是5,所以y = (strlen(s) - 1) \/ 2=(5-1)\/2=2 因此:循环开始时,初始值是x=0,y=2,s="abcde",进入循环 第一次...

c语言求教 各位大神看看,这个程序为什么退不出去~~~
ch-=23;printf("%c",ch);} else printf("%c",ch);} getch();return(0);}

c语言大神求教
const int *f说明f函数返回的指针指向的内容是不可更改的。若省略const,至少会造成两个问题:一是函数f就可以返回一个非常量的指针——这当然不是设计者原先所希望的;二是f的主调函数也就可以随意改变返回指针所指的内容了——这一般也不是设计者的初衷。所以不能省略,省了就失去了这些制约。p++...

这些C语言程序的表达式怎么写?大神求教
4) (x>y) || (abs(x)>abs(y))5) n>=10 && n<=99

C语言,大神求教 为什么答案是123.46?精度为2不是应该123.45吗?还有四舍...
-5.2f中的.2的意思是保留两位小数,第三位小数四舍五入到第二位。怎么就会没有“四舍五入”的说法呢?请记住:C语言中的“精度”都是将“下一位”四舍五入到最低保留位的,而取整是直接舍弃小数部分的。

C语言编程求教!!!
1、把int改为float;2、三个%d改成连续的三个%f,不要留空格;3、这个错误在6行中都存在,把句首的“("”和句尾部的“")”全部去掉,只保留句末的分号(;)即可;4、把%d换成%.2f,一共有六个需要更改;5、把&f前面的&去掉,只留下f,也是有6个&需要去掉。程序应该能正常运行了。如果...

求教c语言大神!为什么p与b的输出值不一样
b输出的是 b『2』数组区域的内存块 *P『2』 输出的是指针的数组区域内存块给赋值了『b,c』 也就是 *p『2』= 『b==b『2』,c==c(2)』这里面的数 输出结果明显大的

想求教个师傅,我自学C语言,零基础,请各位前辈们
根据我个人最开始学习 C 语言编程的切身体会就是:首先在你的电脑上安装一个适合编程的C编译器(例如:WINDOWS下面的是 MS VC、如果使用的是 Linux 系统,则安装一个 gcc 编译器),然后你可以购买一本比较通俗易懂的教材,照着书上每一章节的每一道习题、以及每一章的课后练习题,上机编写、调试...

求教大神如何用c语言编写程序:输入100到n的数,输出各位数的和为9的...
include <stdio.h> int main(){ int re,x,i,j,sum,s;printf("请输入一个数");scanf("%d",&x);if (x>=100) { for (i=100,sum=0;i<=x;i++) { for (s=0,j=i;j!=0;) { re=j%10;s=s+re;j=j\/10;} if (s==9) { printf("%d ",i);sum=sum+i;} } } pri...

使用C语言如何取去掉一个字符串的首尾字符,新手求教各位大神,多谢啦...
字符串用数组表示.比如用str[999]表示字符数组。算出字符长度,删除str[0]和最后一个字符。include<stdio.h> include<string.h> define n 100 void main(){ char a[n],i,t;scanf("%s",a);t=strlen(a);for(i=0;i<t-1;i++)baia[i]=a[i+1];a[i-1]='\\0';printf("%s",a);...

相似回答
大家正在搜