免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2571 | 回复: 6
打印 上一主题 下一主题

通过指针访问指向的字符串 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-13 07:39 |只看该作者 |倒序浏览
在C程序中我定义了一个char型指针数组char *a[2],然后又定义了一个指针指向该数组的首地址 char *p = a; 为什么在这里这样定义编译通不过?还有就是有什么方法可以像操作普通一维数组那样,利用指针操作顺序的取出指针数组的值?

程序如下:
int main(){
    char *p;
    char *p1 = "this is a";
    char *p2 = "string haha";
    char *a[] ={p1,p2};
    p = a[0];
   for(int i = 0; i < 2; i ++){
         printf("%s\n",p++);
        }
    }

我的原意是想通过指针p把数组元素所指向的字符串挨个取出。请问上述程序该如何修改?

论坛徽章:
0
2 [报告]
发表于 2010-07-13 07:40 |只看该作者
  1. #include <stdio.h>
  2. int main() {
  3.         char *p;
  4.         char *p1 = "this is a";
  5.         char *p2 = "string haha";
  6.         char* a[] = { p1, p2 };

  7.         for (int i = 0; i < 2; ++i) {
  8.                 p=a;
  9.                 printf("\n%s",p);
  10.         }
  11. }
复制代码
改成这样的,你再试试

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
3 [报告]
发表于 2010-07-13 08:42 |只看该作者
回复 1# linux初学三月


    将char *p = a改为const char *p = a试试

论坛徽章:
0
4 [报告]
发表于 2010-07-13 09:09 |只看该作者
回复 1# linux初学三月


    你这也不是c程序啊,把for里面的i改了之后我用gcc编译可以通过。。。

论坛徽章:
0
5 [报告]
发表于 2010-07-13 12:12 |只看该作者
或许你可以这样啊。。。
//char_ptr.c

#include <stdio.h>

int main()
{
  int i ;
  //char *p;
  char *p1 = "Just String!! ";
  char *p2 = "String data!!";
  char *a[] = { p1,p2};
  char ** p = & a[0];
  for(i  = 0; i<2 ; i++) {
  
    printf("%s\n",*p++);
  }
}

论坛徽章:
0
6 [报告]
发表于 2010-07-13 12:12 |只看该作者
这不是C99的标准么

论坛徽章:
0
7 [报告]
发表于 2010-07-14 11:30 |只看该作者
基础不是三个月就能恶补的.
你的程序中a是个指针的数组,那么指向a的需要一个2级指针.
象这样
char **p= a;
那么p[0]就是p1, p[1]就是p2.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP