char *str[5]={
"Austria",
"United States",
"United Kingdom",
"Switzerland",
"Canada"
};
char *(*ssha)[5]=&str;
我想用数组指针char *(*ssha)[5]=&str 取指针数组str的第1个元素即“United States”中的“S"这个字符并且把它打印出来该如何操作
第1个回答 2019-05-25
#include<>
int main()
{
char *str[5]=
{
"Austria",
"United States",
"United Kingdom",
"Switzerland",
"Canada"
};
char **ssha=&str[3];
printf("%c",(*ssha)[0]);//实际上就是str[3][0]
//--------或者--------
//char **ssha=str;
//printf("%c",*(*(ssha+3)+0));
return 0;
}追问
int main()
{
char *str[5]=
{
"Austria",
"United States",
"United Kingdom",
"Switzerland",
"Canada"
};
char **ssha=&str[3];
printf("%c",(*ssha)[0]);//实际上就是str[3][0]
//--------或者--------
//char **ssha=str;
//printf("%c",*(*(ssha+3)+0));
return 0;
}追问
“United States”我想取这个字符串中的"S"字符,我尝试修改代码为
char **ssha=&str[1];
printf("%c",*ssha[8]); 但不能执行 最好不用循环能否执行
问题在于运算符优先级,你得这么写(*ssha)[7] //S的下标是7,你算错了
或者
----------------
char **ssha=str;
printf("%c",*(*(ssha+1)+7));
----------------
最简单的就是直接str[1][7]
第2个回答 2019-07-15
一维数组
#include<stdio.h>
main()
{
char *p,s[]="straswasss";
p=s;
printf("%c\n%c\n",*(p+2),*(p+5));
puts(s);
}
一维数组
#include<stdio.h>
main()
{
char *p="straswasss";
printf("%c\n%c\n",*(p+2),*(p+5));
puts(p);
}
A(即B的地址)是指向指针的指针,称为二级指针,用于存放二级指针的变量称为二级指针变量.根据B的不同情况,二级指针又分为指向指针变量的指针和指向数组的指针。
二维数组
#include<stdio.h>
int main()
{
int i;
char s[2][8]={"stra","swasss"},*p,*q;
for(p=s[0];*p;p++)//p指向s[0],p是一级指针
printf("%c ",*p);
for(i=0;i<2;i++)
printf("\n%s",s+i);//s是二级指针
printf("\n");
puts(s[0]);
puts(s[1]);
return 0;
}
#include<stdio.h>
main()
{
char *p,s[]="straswasss";
p=s;
printf("%c\n%c\n",*(p+2),*(p+5));
puts(s);
}
一维数组
#include<stdio.h>
main()
{
char *p="straswasss";
printf("%c\n%c\n",*(p+2),*(p+5));
puts(p);
}
A(即B的地址)是指向指针的指针,称为二级指针,用于存放二级指针的变量称为二级指针变量.根据B的不同情况,二级指针又分为指向指针变量的指针和指向数组的指针。
二维数组
#include<stdio.h>
int main()
{
int i;
char s[2][8]={"stra","swasss"},*p,*q;
for(p=s[0];*p;p++)//p指向s[0],p是一级指针
printf("%c ",*p);
for(i=0;i<2;i++)
printf("\n%s",s+i);//s是二级指针
printf("\n");
puts(s[0]);
puts(s[1]);
return 0;
}