C语言中 *tt++与tt++的区别,我是个菜鸟,是否能为我说的详细点啊,大侠们?
作者&投稿:泣菲 (若有异议请与网页底部的电邮联系)
正义点数 用来冲巫妖王之怒版本的一些声望还是很好的 比如龙眠崇拜了一条红龙 霍迪尔之子崇拜大象 还有练级的传家宝
勇气点数 这个版本用来换装备 升级武器的 一定要多弄一点 不然太不爽了
array是数组的意思
int a[4]; //a就是一个array
for (int i=0;i<4;i++) a[i]=i; //数组初始化
a[2]=10; //赋值数组第三个元素
for (int i=0;i<3;i++) a[3]+=a[i];
printf("%d",a[4]); //a【4】下标越界,会报错
指针实际上也是一个数值,而这个数值就是指针所指向的地址的值。
如果单独执行
是没有区别的
*tt++; 是先执行tt+; 然后进行解引用*tt, 由于没有值来接收,所以没有赋值动作
如果
a = *tt++;
那就有区别了,
tt++;
a = *tt;
这个考察的是优先级,++和*的优先级应该是一样高的,但是要右结合,所以先算tt++,但是后置++的特性就是 在下个语句生效,当前语句tt的值没有改变
“++”为自增1运算符,其功能是使变量tt的值自增1,其结合方向具有右结合性。
“*”有两种意思,一种作为双目运算符,表示乘法运算;一种作为单目运算符,表示取址运算,(不懂可翻看课本指针部分内容) 在此处为单目运算符,表取址运算,作单目运算符时,其优先级与++优先级相同,结合方向为自右向左。
tt++表示tt变量先参与运算,然后再自增1;*tt++表示,取指针变量tt所指的值,然后指针变量tt自增1.
希望解释能对你有所帮助。
*tt++就是tt++后再解引用,tt是个指针类型
tt++是自增运算,加一个单位值,整形的话是加1,指针的话会加一个不一定是1的值,但是保证是指向下一个地址
裴树安宫: tt应该是一个pointer. 比如tt指向的数据是a[1],数据类型是char.那么,tt++ 这个表达式做完后,tt指向a[2],即,指针向后移动了一个字节;当然,如果a[1]的数据类型是int,tt++做完后,tt指向a[2],指针向后一定4个字节. 而(*tt)++做完后,相当于a[1]++,即,a[1]中的值加1.但是*tt++做完后,正如一楼所说,没有什么改变. 指针实际上也是一个数值,而这个数值就是指针所指向的地址的值.
隆林各族自治县15952642276: C语言,while(*t)t++; t -- ;这句表示什么 - ?
裴树安宫: 可以改为形如: while (*t) {t++;} t--; 那么可以看到,如果t指向的内容(数据)不为0(NULL),那么执行循环,t++,t的指向下一个指针;如果下一个的内容(数据)不为0(NULL),则继续执行循环...... 如果下一个的内容(数据)为0(NULL),则跳出循环,执行t--.到此结束该段代码,继续往下执行. 啊,感觉语言还是挺难简单描述的.
隆林各族自治县15952642276: C语言菜鸟求教:while(*t++)中*t++如何理解,是*(t++)吗?可是*和++优先级一样呀? - ?
裴树安宫: *与++运算符优先级相同,且都是从右往左结合.对于*t++,可以这样理解(本人拙见,非官方,非权威),先t与*结合,结果是取值,等同于*t,因为++是后置的,所以再与++结合,结果是指针增1,等同于t++.那么*t++的意思是,先取值,后更新指针.
隆林各族自治县15952642276: (5+t,t++)在c语言中 - ?
裴树安宫: 你说的是逗号表达式,逗号表达式求得是最后一个元素的值,所以你的结果是t++
隆林各族自治县15952642276: c语言中指针*p+t和*(p+t)有什么区别? - ?
裴树安宫: *的优先级高啊.比如int a[2] = { 1, 10 }; int *p = &a[0];*p + 1就是a[0] + 1结果是2,*(p + 1)是a[1]结果是10
隆林各族自治县15952642276: c语言中t*=1/i和t=t/i有什么区别?? - ?
裴树安宫: t*=1/i 表示的是 先 用t * (1 / i) 在把得到的结果赋给 t t = t/i 表示的就是 把 t/i 得到的结果赋给 t ,也等同于 t/=i
隆林各族自治县15952642276: c语言中for(;*t!='\0';t++)什么意思?还有*(a++)=*t.题目为如左图,求高人 - ?
裴树安宫: 第一个for循环的意思 for(初值没有;t指向的变量的值 不等于 空字符 ;t指针指向下一个变量),*(a++)=*t 按标准分开写是 a++; *a = *t; a指向下一个变量,然后把 *t指向的变量的值 赋给 *a指向的变量
隆林各族自治县15952642276: c语言中for(;*t!='\0';t++)什么意思?还有*(a++)=*t.题目为:编写函数fu - ?
裴树安宫: for(;*t!='\0';t++) t应该是字符串指针,for循环直到字符串中最后一个字符*(a++)=*t 把此时t指针指向的内容赋给a指针指向的内容,然后a指针指向下一个
隆林各族自治县15952642276: C语言中while(*t++)什么意思?还有 int aaa(char *s) {char *t=s; while (*t++);t -- ; return (t - s)... - ?
裴树安宫: int aaa(char *s) { char *t=s; while (*t++); 判断*t的值: 1,如果不为0,则继续while循环,执行t++,指针指向下一个 2,如果为0,跳出while循环,执行t++,指针指向下一个t--; return (t-s); }比如数组char temp[] = {1, 2, 3, 4, 5, 6, 7, 0, 8, 9}; 执行...
隆林各族自治县15952642276: c语言中 t=x;x=y;y=t;与{t=x;x=y;y=t;} 两条语句有什么区别? - ?
裴树安宫: t=x;x=y;y=t;//这是三条语句{t=x;x=y;y=t;} //这算一条,是复合语句功能是一样的,如果有人问它们的区别,应该是在考验对复合语句概念的认识复合语句用在只能出现一条语句的地方,如if(),for(),else,do的后面