永发信息网

c语言数组指针问题。。。

答案:5  悬赏:70  手机版
解决时间 2021-02-04 20:45
  • 提问者网友:欲望失宠
  • 2021-02-04 06:48
#include <stdio.h>
#include <string.h>
main()
{ char str[][20]={"One*World","One*Dream!"},//此处定义是字符数组是什么样子的?? *p=str[1];//他把数组中的哪个元素赋给了p??
  printf("%d,",strlen(p)); printf("%s\n",p);
}
程序运行后的输出结果是?
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-02-04 07:58
#include  <stdio.h>
#include  <string.h>
main()
{
  char a,*p=&a;    //我为了能够运行设了几个变量
  char str[][20]={"One*World","One*Dream!"};     
  p=str+1;   //如果是  *p=str[1] 是把str[1][0]的值给了a;
  printf("%d,",strlen(p));
  printf("%s\n",p);
}二维数组中str[1]=str[1][0]   //都是第1行第0列的元素
     str和&str[0] 是第0行
     str+1和 &str[1] 是第1行
全部回答
  • 1楼网友:上分大魔王
  • 2021-02-04 11:20
char *str[2] = {"One*World","One*Dream!"}; char str[][20]和char *str[2]等价,这样就好理解了
  • 2楼网友:孤老序
  • 2021-02-04 10:37
错误,指针类型不符。 a是一个二维数组,而c里的二维数组其实就是数组的数组,你可以理解a为一个一维数组,只不过这个数组的每个元素都是一个包含10个元素的一维数组。 在c里,当直接使用数组名时,它的类型等于指向数组第一个元素的指针,也就是指向a[0]的指针,而a[0]的类型是int [10], 所以p的类型应该是int (*p)[10]; 上面改为: int a[4][10],(*p)[10];p=a; 注意这里是如何定义指向数组的指针,[]运算符的优先级高于*,所以用括号(*p)来说明这里是一个指针, 如果是这样int *p[10]就是定义一个指针数组而不是数组指针了。
  • 3楼网友:英雄的欲望
  • 2021-02-04 09:13
此时str[0]=="One*World";str[1]=="One*Dream!"; p=="One*Dream!";现在p的值是O的地址
  • 4楼网友:玩世
  • 2021-02-04 08:50
本来你定义二维数组存放两个字符串应当写: char str[2][20]={"One*World","One*Dream!"}; 但是你懒得写str的第一个下标最大值了,那么编译器会帮你数后面初始化数据中一共有几个字符串,自动帮你填上这个最大值2 开完了数组str[0]指向的20个字符的数组保存"One*World"字符串, str[1]指向的保存"One*Dream!"字符串 执行p=str[1];就是让p指向str[1]的20个字符数组的第一个单元,相当于p=&str[1][0]; 输出p指向的字符串长度,即"One*Dream!"为11, 并且输出字符串One*Dream!和一个换行
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯