Chinaunix

标题: 简单的指针,呵呵 [打印本页]

作者: 潇洒人生    时间: 2008-05-19 21:39
标题: 简单的指针,呵呵
#include <stdio.h>

char *pp[]={        //因为优先级,pp[]数组里的每一个元素都指向char类型的指针
        "a",                //所以pp[0]是一个指针,其大小是4字节,pp[0]=&"a",pp[1]=&"bb"
        "bb",                //所以pp存放的是字符串的指针的指针
        "ccc",
        "dddd",
        "over!"
};

int testprint(char *p)
{
        printf("%s\n",p);
}

int main()
{
        int i=0;
        //pp[1]=&"I Love you!"; //可以试试这么写!
        for(i=0; i< sizeof(pp)/sizeof(pp[0]); i++)//传指针
                testprint(pp);

        return 0;
}
作者: pinejeelyd    时间: 2008-05-19 21:49
标题: 回复问题
#include <stdio.h>

char *pp[]={        //因为优先级,pp[]数组里的每一个元素都指向char类型的指针
        "a",                //所以pp[0]是一个指针,其大小是4字节,pp[0]=&"a",pp[1]=&"bb"
        "bb",                //所以pp存放的是字符串的指针的指针
        "ccc",
        "dddd",
        "over!"
};

int testprint(char *p)
{
        printf("%s\n",p);
        
        return 0;
}

int main()
{
        int i=0;
        //pp[1]=&"I Love you!"; //可以试试这么写!
        for(i=0; i< sizeof(pp)/sizeof(pp[0]); i++)//传指针
                testprint(pp);

        return 0;
}
作者: 潇洒人生    时间: 2008-05-19 21:56
个人水平很菜,只想引几个高手出来探讨指针。。。。
作者: scutan    时间: 2008-05-19 22:13
原帖由 潇洒人生 于 2008-5-19 21:56 发表
个人水平很菜,只想引几个高手出来探讨指针。。。。


可以看看《C专家编程》这本书,把它搞懂了,C中的指针就没有问题了。
作者: MMMIX    时间: 2008-05-19 22:26
原帖由 scutan 于 2008-5-19 22:13 发表


可以看看《C专家编程》这本书,把它搞懂了,C中的指针就没有问题了。

agreed. 没事多看点书吧。
作者: savagejin    时间: 2008-05-19 22:33
pp是**吧,testprint需要的是*
作者: tomsu    时间: 2008-05-20 19:07
也许你想要的是:
testprint(pp);
or
testprint(*(pp+i));
作者: 潇洒人生    时间: 2008-05-20 20:57
不好意思,粘贴的时候错了
#include <stdio.h>

char *pp[]={        //因为优先级,pp[]数组里的每一个元素都指向char类型的指针
        "a",                //所以pp[0]是一个指针,其大小是4字节,pp[0]=&"a",pp[1]=&"bb"
        "bb",                //所以pp存放的是字符串的指针的指针
        "ccc",
        "dddd",
        "over!"
};

int testprint(char *p)
{
        printf("%s\n",p);
}

int main()
{
        int i=0;
        //pp[1]=&"I Love you!"; //可以试试这么写!
        for(i=0; i< sizeof(pp)/sizeof(pp[0]); i++)//传指针
                testprint(pp);

        return 0;
}
狂晕自己,实际上我是想回答有个朋友怎么打印一个文件中的字符串来写的。这个例子在vc6.0下是通过的,打印出来的结果自然是
a
bb
ccc
dddd
over!

[ 本帖最后由 潇洒人生 于 2008-5-20 20:59 编辑 ]
作者: 潇洒人生    时间: 2008-05-20 21:02
nnd,原来粘贴不上中括号,我是用vi编辑,然后粘贴的时候,明明有中括号的,一发表就没有中括号了,绝对是bug,希望斑竹注意。。。。
应该是这个样子
for(i=0; i< sizeof(pp)/sizeof(pp[0]); i++)//传指针
                testprint( pp【i】 );//nnd,又搞一次,传递的是pp呀,系统你小样的别把老子的中括号又省略掉,老子会跟你拼命!
否则
如果是testprint(pp),pp是一个指针的指针,那肯定是通不过的。。。

[ 本帖最后由 潇洒人生 于 2008-5-20 21:08 编辑 ]
作者: 潇洒人生    时间: 2008-05-20 21:07
败给系统了
我传递的是pp【i】,读起来应该是pp左中括号i右中括号
作者: 潇洒人生    时间: 2008-05-20 21:11
晕倒,原来紫光拼音下,按shift切换英文输入,发现中括号是输入不进系统的,为什么,纳闷呀。。。
如果是这个样子的话,以后还怎么办呀?
作者: scutan    时间: 2008-05-20 21:25
标题: 回复 #11 潇洒人生 的帖子
你这样来用

[code]
在这里面写你的代码
[/code]
作者: 潇洒人生    时间: 2008-05-20 22:20
恩,谢谢楼上的提醒!
作者: MMMIX    时间: 2008-05-21 18:50
原帖由 潇洒人生 于 2008-5-20 21:02 发表
nnd,原来粘贴不上中括号,我是用vi编辑,然后粘贴的时候,明明有中括号的,一发表就没有中括号了,绝对是bug,希望斑竹注意。。。。

http://linux.chinaunix.net/bbs/thread-912097-1-1.html
作者: reesun    时间: 2008-05-22 11:55
标题: 回复 #1 潇洒人生 的帖子
int testprint(char *p)
{
        printf("%s\n",p);
                return 0;
}

int main()
{
        int i=0;
        //pp[1]=&"I Love you!"; //可以试试这么写!
        for(i=0; i< sizeof(pp)/sizeof(pp[0]); i++)//传指针
                testprint(pp);

        return 0;
}
作者: Crimsoncn    时间: 2008-05-22 12:37
ARM上的有些指针操作有些问题,太偏的用法还是少用为妙呵呵,64位指针经常会出些诡异问题
作者: 潇洒人生    时间: 2008-05-22 19:06
回15楼的朋友,由于我刚开始不知道怎么操作导致我的代码少个中括号。
我的意思是传递一个字符串给一个函数打印之类的,这个应用不算不广呀。比如从一个文件中传递一个字符串。

  1. #include <stdio.h>

  2. char *pp[]={        //因为优先级,pp[]数组里的每一个元素都指向char类型的指针
  3.         "a",                //所以pp[0]是一个指针,其大小是4字节,pp[0]=&"a",pp[1]=&"bb"
  4.         "bb",                //所以pp存放的是字符串的指针的指针
  5.         "ccc",
  6.         "dddd",
  7.         "over!"
  8. };

  9. int testprint(char *p)
  10. {
  11.         printf("%s\n",p);
  12. }

  13. int main()
  14. {
  15.         int i=0;
  16.         //pp[1]=&"I Love you!"; //可以试试这么写!
  17.         for(i=0; i< sizeof(pp)/sizeof(pp[0]); i++)//sizeof(pp)/sizeof(pp[0])的意思是判断有几个字符串,呵呵
  18.                 testprint(pp[i]);//从字符串组中传递一个字符串的首地址

  19.         return 0;
  20. }
复制代码


16楼的朋友,能不能举个例子呢?

[ 本帖最后由 潇洒人生 于 2008-5-22 19:12 编辑 ]
作者: miki922    时间: 2008-05-23 10:23
支持楼主一下!!!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2