重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
(*p)[4]是数组指针,每一个指针指向含有4个整形的一维数组;p[1]对于前面的声明来说是指针,而p[1][1]是二维数组,所以不用再加上*取值,若要加上*,
成都网络公司-成都网站建设公司创新互联10余年经验成就非凡,专业从事网站制作、做网站,成都网页设计,成都网页制作,软文推广,一元广告等。10余年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:028-86922220,我们期待您的来电!
代码中:printf("%4d",p[i][j]);
可以这样处理:printf("%4d",*(p[i]+j));
指针传递的实质就是传递首地址,要取地址里面的数据就要叫*或者直接指定加[m],比如*argv,和argv[0]意思都是一样的。
因为input()函数创建的数组num[5]作用域在input()函数之内,当input()函数调用结束后,这段内存会被回收,也就是里面的值会变成其他数。修改办法是在堆区创建数组变量手动释放内存!
修改后:
第一题你好象写错了;
#include
iostream
using
namespace
std;
int
main()
{
char
str[]="xyz",*ps;
ps=str;
while(*ps)
ps++;
for(ps--;ps-str=0;ps--)
putchar(*ps);
return
0;
}
ps=str是正确的,因为你的ps在上边定义的是一个指针。那么下边的赋值运算中就应该是地址之间的传递,str作为数组名,它本身就是一个地址。同时ps也是一个指针。结果就是
xyz
第二题的答案是:
4
5
因为作为形式参数的b在传递到你的调用函数f之后虽然做了++操作但是这个b却只是一个副本,不是真正的b,等这个f函数执行完毕之后就会把这个副本释放掉,对主函数的b并不产生影响。要想修改主函数中的数值,在传递参数的时候只有传递指针,就像你的a那样,给函数传递一个指针就可以。
第三题答案是17
这个题就是把这个数组中的所有奇数项想加
第四题
答案是*2*4*
就是把所有偶数的元素都设置成*
第五题就是
2
5
8
10
整个题目就是把a[4]=a[0]+a[1]+a[2]+a[3]+a[4]
首先确定是字符指针数组还是字符数组指针,前者是一个数组,数组每个元素都是一个字符指针,后者是一个指向字符数组的指针。
若是指向字符数组的指针,则很简单,使用scanf("%s",
str);函数获取输入的字符串,然后使用字符串拷贝函数strcpy(stc,
dest);将获取的字符串拷贝到指定地址的字符指针数组中,拷贝过程中注意检查访问数组是否越界,若越界,则需要在字符数组的最后一个元素赋值为结束符'\0'。
若是赋值
字符指针数组,那么就是对数组中的某一个元素指向的字符数组进行拷贝赋值,其过程与前者相同。