|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
单个几条语句还凑活可以看懂,但是完整的程序放在一起就不知道要干嘛了呜呜呜
向好心人求助!哪位可以帮帮忙详细解释一下每一条语句的作用吗?
#include<stdio.h>
void main()
{
int a[]={1,2,3};
int *p=a,b;
char *q="abcde";
b=*++p;
printf("%d%d%d%d%d\n",a,*a,*(a+2),*(p+1),p[1]);
printf("%d%d%c%s%s\n",q,*q,q[3],q+3,q);
}
- #include<stdio.h>
- int main()
- {
- int a[]={1,2,3}; // 定义一个有三个元素的数组a,分别存放1、2、3
- int *p=a,b; // 定义一个整形指针,赋值为a,也就是指向a数组的第一个元素(数组名就是指向数组第一个元素的指针);还有一个整型变量b
- char *q="abcde"; // 定义一个字符数组(也可以理解为字符串),赋值为:“abcde”
- b=*++p; // 这里*和++的优先级一样高,结合性是右结合性,也就是从右往左,所以先计算“++p”,p现在变成了a数组的第二个元素的指针,再进行解引用,b也就是a数组第二个元素
- printf("%d%d%d%d%d\n",a,*a,*(a+2),*(p+1),p[1]); // 这里我感觉有一点问题,第一个格式化操作符不应该是“%d”,而应该是“%p”,因为a是一个指针。这条语句会分别输出:a数组的第一个元素的地址、a数组的第一个元素(1)、a数组的第三个元素(3)、a数组的第三个元素(3)、a数组的第三个元素(3)。
- printf("%d%d%c%s%s\n",q,*q,q[3],q+3,q); // 这里我也感觉有一点问题,因为q不是整形变量,而是一个字符串,所以第一个格式化操作符应该是“%s”,而*q是字符数组的第一个元素,也就是a,a是一个字符,所以第二个格式化操作符应该是“%c”。这条语句会分别输出:abcde、a、d、de、abcde
- return 0;
- }
复制代码
|
|