| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 966 人关注过本帖
标题:C语言问题
只看楼主 加入收藏
at445
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2011-6-14
收藏
得分:0 
回复 2楼 zaixuexi
什么都没做 几行代码跟x[0][0]=x[0][0]一样的作用
2011-12-21 14:28
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
以下是引用at445在2011-12-21 14:28:41的发言:

什么都没做 几行代码跟x[0][0]=x[0][0]一样的作用
你觉得我需要做什么?我只是说明下问题而已,因为LZ搞不清楚指针

技术问题,请不要以短消息方式提问
2011-12-21 14:47
hlydfmc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-12-19
收藏
得分:0 
这是一本书上的代码,不是很理解,所以拿上来让大家帮忙解释解释,
可书上就是这么弄的!
2011-12-21 15:54
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
以下是引用hlydfmc在2011-12-21 15:54:35的发言:

这是一本书上的代码,不是很理解,所以拿上来让大家帮忙解释解释,
可书上就是这么弄的!
我已经解释的很清楚了,再弄不懂,是你的问题了

技术问题,请不要以短消息方式提问
2011-12-21 15:56
yeliming
Rank: 2
等 级:论坛游民
帖 子:23
专家分:23
注 册:2011-12-9
收藏
得分:2 
我觉得是:
x[0][i]=p[i]
x是一个二维数组,p是一个一维数组
2011-12-21 16:06
wuyanyouqing
Rank: 2
等 级:论坛游民
帖 子:14
专家分:26
注 册:2011-4-17
收藏
得分:2 
比如说i=0;
那么*(x[0]+0)表示什么?
答案:第0行第0列元素。
i=1
*(x[0]+1)表示什么?
答案:第0行第1列元素。
2011-12-21 16:13
kennel2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:157
注 册:2011-12-13
收藏
得分:2 
以下是引用wuyanyouqing在2011-12-21 16:13:13的发言:

比如说i=0;
那么*(x[0]+0)表示什么?
答案:第0行第0列元素。
i=1
*(x[0]+1)表示什么?
答案:第0行第1列元素。
认同这种理解...
#include <stdio.h>

int main()
{
    int a[3][4]={
        {1,3,5,7},
        {9,11,13,15},
        {17,19,21,23}
    };
    int i,(*b)[4];
   
    b = a+1;                // b指向二维数组的第1行, 此时*b[0]或 **b是a[1][0]  
    for(i = 1; i <= 4; b = b[0] + 2,i++) // 修改b的指向, 每次增加2  
        printf("%d\t", *b[0]);
    printf("\n");

    for (i = 0; i < 2; i++) {
        b = a + i;            //修改b的指向, 每次跳过二维数组的一行
        printf("%d\t", *(b[i] + 1));
    }
    printf("\n");

    return 0;
}
    程序运行结果如下:
     9    13   17   21
     3    11   19
(自己推算的结果呵,可以试试对不)
2011-12-21 17:49
kennel2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:157
注 册:2011-12-13
收藏
得分:0 
回复 17楼 kennel2009
运行结果是
9  13  17  21
3  19
2011-12-22 10:30
jfei
Rank: 4
来 自:郑州
等 级:业余侠客
帖 子:92
专家分:268
注 册:2011-8-27
收藏
得分:2 
#include"stdlib.h"
#include"stdio.h"
void main(){
double *ss;//定义double类型,地址名字为ss的一级指针
int  i,j,n;//i,j循环变量,
int length;
n=4;
ss=(double *)malloc(n*(n+1)*sizeof(double));//静态分配20个类型内存空间
length=n*(n+1);
for(i=0;i<n;i++)
{
 for(j=0;j<n+1;j++)
  *(ss+i*(n+1)+j)=0;
  *(ss+i*(n+1)+i)=1;//赋值
}
//结果为:ss[0]=1,ss[5]=1,ss[10]=1,ss[15]=1,ss[20]=1,其余的值为0
for(i=0;i<length;i++)
 print("ss[%d]=%4d",i,*(ss+i));
}


虾米们!!!有意者加QQ 2434202652,2632939128联系我
2011-12-22 11:02
快速回复:C语言问题
数据加载中...
 
   



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

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