C语言:指针数组的指针 看不懂,请解释一下这题: 主要是这句:t = (p += sizeof(int))[-1];
#include<stdio.h>voidf(char**p);intmain(void){char*argv[]={"ab","cd","ef","gh","ij","...
#include<stdio.h>
void f(char **p);
int main(void)
{
char *argv[] = {"ab","cd","ef","gh","ij","kl"};
f(argv);
printf("\n");
return 0;
}
void f(char **p)
{
char *t;
t = (p += sizeof(int))[-1];
printf("%s",t);
} 展开
void f(char **p);
int main(void)
{
char *argv[] = {"ab","cd","ef","gh","ij","kl"};
f(argv);
printf("\n");
return 0;
}
void f(char **p)
{
char *t;
t = (p += sizeof(int))[-1];
printf("%s",t);
} 展开
展开全部
先从里到外分析下 1
sizeof(int)是表示int的字符数,现在int的字符数是4,所以这个式子的答案是4, 2
接着p + = 4 就是 p = p + 4; 3
然后[ -1 ] 表示指针p向左移动一个单位。-向左,+向右 4
调用函数的时候传递数组地址,这个时候,**p所保存的是主函数数组的第一个元素的地址,即*argv[0]也就是 "ab" 。然后由第3和第4,可以知道指针t保存的是p + 3的地址,即主函数中数组*agrv[3]。结果就是"gh"了
sizeof(int)是表示int的字符数,现在int的字符数是4,所以这个式子的答案是4, 2
接着p + = 4 就是 p = p + 4; 3
然后[ -1 ] 表示指针p向左移动一个单位。-向左,+向右 4
调用函数的时候传递数组地址,这个时候,**p所保存的是主函数数组的第一个元素的地址,即*argv[0]也就是 "ab" 。然后由第3和第4,可以知道指针t保存的是p + 3的地址,即主函数中数组*agrv[3]。结果就是"gh"了
追问
谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p指向"ij",但p的类型不是char*,而是char**。
追问
谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询