C语言数组问题~~求高手【【详解】】~~~多谢~!
发布网友
发布时间:2022-09-16 03:41
我来回答
共6个回答
热心网友
时间:2023-11-02 23:30
1、 printf("%d",*(p++)); 语句输出的是2
printf("%d\n",++k); 语句输出的是 p指针的地址+sizeof(int)
2、答案是C 当输入完三行时,c[N]里的数据分别是:{a,<CR>,b,<CR>,c,d}6个数据。
3、答案是D。(*cp)[5]是指向数组的指针,意思是这个数组有5个数据都是指针,cp=c后这5个指针分别存放二维数组c[4][5]的每行的首地址的指针。所以cp是指针的指针。*cp是指针指向c[0][0],*cp+2是指针偏移 指向c[0][2],*(*cp+2)是c[0][2]的值,所以只有它能引用数组的元素。
热心网友
时间:2023-11-02 23:30
首地址a和字符串长度
void fun(char *w, int m)
{ char s, *p1,*p2;
p1=w; //指向数组的开始位置
p2=w+m-1; //指向数组的最后一个字符的位置
while(p1<p2) //保证两个指针不指向同一个地方 相同退出
{
s=*p1++; //p1指向的字符给s字符后 p1移向一个字符位置
*p1=*p2--; // p2位置的字符 赋值给 p1位置的字符 p1向前移动一个位置
*p2=s; // 字符s赋值给p2位置的字符
}
}
就这样
位置 0 1 2 3 4 5 6
循环前 A (p1) B C D E F G(p2)
s=*p1++; 后 A (s) B(p1) C D E F G(p2)
*p1=*p2--; A (s) G(p1) C D E F (p2) G
*p2=s; A(s) G(p1) C D E A(p2) G
一次循环 后 (就是上一行 以下类似上面)
2 A G A (p1) D G (p2) A G
3 A G A A(p12) G A G
热心网友
时间:2023-11-02 23:31
1、 printf("%d",*(p++)); 语句输出的是2
printf("%d\n",++k); 语句输出的是 2、答案是C 当输入完三行时,c[N]里的数据分别是:{a,<CR>,b,<CR>,c,d}6个数据。
3、答案是D。(*cp)[5]是指向数组的指针,意思是这个数组有5个数据都是指针,cp=c后这5个指针分别存放二维数组c[4][5]的每行的首地址的指针。所以cp是指针的指针。*cp是指针指向c[0][0],*cp+2是指针偏移 指向c[0][2],*(*cp+2)是c[0][2]的值,所以只有它能引用数组的元素。
热心网友
时间:2023-11-02 23:31
第一题是 *(p++)=2,根据优先级先算括号内,p++的意思是先使用后自加,所以相当于*p,p=a;所以*p指的是数组中的第一个元素。同一原理**(++k)=4.
第二题 A
第三题 D
热心网友
时间:2023-11-02 23:32
high歌 的回答是正确的
热心网友
时间:2023-11-02 23:33
知道麻烦还不给分,俺们当苦力啊追问回答得好姐才追加,悬赏扔出去没人回答,姐傻么?!