| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:pointer,array 求值
只看楼主 加入收藏
闹闹儿
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-15
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
pointer,array 求值
请高人帮忙解释下
char* str = "2,3,5,7,11,13";
int prim[] = {2,3,5,7,11,13};
char* ptr1 = str;
int* ptr2 = &prim[1];
char* ptr3 = str + prim[5];

求值:
1) str[6]
2)*(ptr3)
3) *(ptr1+4)
4) ptr2[2]
5) *((ptr1+3) + *ptr2)
6) (prim[3] == str[3])

请详解每题。谢谢
搜索更多相关主题的帖子: array pointer 求值 
2010-06-15 18:06
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
收藏
得分:5 
回复 楼主 闹闹儿
有点看不懂你的意思,但是我估摸着给你说说,我也是新手,不知道对不对
#include<stdio.h>
main()
{
    char *str = "2,3,5,7,11,13";//定义一个字符串指针
    int prim[] = {2,3,5,7,11,13};//定义一个一维数组
    char *ptr1 = str;//定义一个指针,赋值为str指针的地址
    int *ptr2 = &prim[1];//定义一个指针,赋值为数组prim第二个元素的地址
    char *ptr3 = str + prim[5];//定义一个指针,赋值为指针str的指针变量(地址)与数组prim第五个元素(5)的值的和
    printf("%c\n", str[6]);//输出指针数组第七个字符的值,7
    printf("%p\n", *ptr3);//输出指针所对应的值,因为他的两个参数类型不同,输出结果也不同,这里得00000000
    printf("%c\n", *(ptr1+4));//输出指针ptr1后面四个位置的值,也就str字符的第五个字符,5
    printf("%p\n",&prim[1]);//得出prim[1]的地址即ptr2指针
    printf("%p\n", ptr2[2]);//输出ptr2指针变量的第二个地址位
    printf("%p\n", *((ptr1+3) + *ptr2));//str字符的第4个字符","的地址和数组prim第二个元素的地址的和
    if(prim[3] == str[3])//一个是数值,一个是地址,没有可比性,所以输出no!
        printf("yes!\n");
    else
        printf("no!\n");
}
2010-06-15 20:48
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

运行结果
2010-06-15 20:51
z9895512
Rank: 2
等 级:论坛游民
帖 子:24
专家分:43
注 册:2010-6-3
收藏
得分:5 
1)str[6]用%c格式输出='7'就是指向第7个字符(也就是第六列)。数字和符号都算字符。
2) 题目出错,指向未知内存。
3) *(ptr1+4)用%c格式输出='5'str是字符指针变量,也是其字符串首地址指向‘2’。一个字符占2个字节,+4就是向后移动两个字符。所以是‘5’.
4) ptr2[2]用%d输出=7。
由于int* ptr2 = &prim[1];也就是把prim[1](值是3)的地址赋给ptr2作为首地址.ptr2[2]就是在首地址的基础上向后移动两个数据也就是3向后两个数据,是7.
5)*((ptr1+3) + *ptr2)相当于)*((ptr1+(3+ *ptr2)) ,而*ptr2=2 , --> *(ptr1+5)=ptr1[5](str[5])用%c输出=‘5’.
6) (prim[3] == str[3]) 题意没说清。如果是判断是否相等,则答案是0 不相等。


不得不说,这样问几乎没人愿意回答你的。随便把题目一扔就算了,而且一看就知道题目还没完全写清楚。希望以后提问要写清楚疑问。

最后提醒,记得结贴,给回答不错的人分数哦~

2010-06-15 21:04
快速回复:pointer,array 求值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012511 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved