标题:数组指针不懂,求解
只看楼主
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
结帖率:73.08%
已结贴  问题点数:100 回复次数:25 
数组指针不懂,求解
1:指针数组
#include<stdio.h>
int main(void)
{
    int a=0,b=1,c=2,*d[3]=&a,&b,&c;/*在C语言和C++语言中,数组元素全为指针的数组称为指针数组。*/
    printf("%d",*d[0]);
    printf("%d",*d[1]);
    printf("%d",*d[2]);
    return 0;
}
2:指针数组
#include<stdio.h>
int main(void)
{
    int a=0,b=1,c=2,*d[3]={&a,&b,&c};/*在C语言和C++语言中,数组元素全为指针的数组称为指针数组。*/
    printf("%d",*d[0]);
    printf("%d",*d[1]);
    printf("%d",*d[2]);
    return 0;
}
3:数组指针
#include<stdio.h>
int main(void)
{
    int a=0,b=1,c=2,*d[3];/*数组元素d[0],d[1],d[2]都是一个指针,和一个正常的指针变量没区别*/
    d[0]=&a;
    d[1]=&b;
    d[2]=&c;
    printf("%d",*d[0]);
    printf("%d",*d[1]);
    printf("%d",*d[2]);
    return 0;
}
数组指针不懂,不懂它一般运用在什么地方,怎样运用
1:
#include<stdio.h>
int main(void)
{
   int a=0,(*p)[2];//声名一个数组指针,不懂如何使用
   (*p)[2]=a;
   printf("%d",(*p)[2]);//没有错误,有一个警告,输出0
   return 0;
}
2:
#include<stdio.h>
int main(void)
{
   int a=0,(*p)[2];//声名一个数组指针,不懂如何使用
   (*p)[2]=10;
   printf("%d",(*p)[0]);//没有错误,一个警告,输出的却是零,为什么不是10
   return 0;
}
3:
#include<stdio.h>
int main(void)
{
   int a=0,(*p)[2];//声名一个数组指针,不懂如何使用
   (*p)[2]=10;
   printf("%d",(*p)[2]);//没有错误,一个警告,输出的是10
   return 0;
}
4:
#include<stdio.h>
int main(void)
{
   int a=0,(*p)[2];//声名一个数组指针,不懂如何使用
   (*p)[2]=&a;
   printf("%d",(*p)[2]);//一个错误,一个警告
   return 0;
}
真心不懂数组指针怎么样用如何用,求简单的使用示例带码(没有错误和警告的),加注释
搜索更多相关主题的帖子: void include return C语言 
2013-04-26 17:14
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:9 
数组指针,是指向数组的指针

程序代码:
#include <stdio.h>
int main(void)
{
    int a[][3] = {{1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}};
    int (*p)[3];    //声明数组指针,数组长度必须为 3
    p = a;//或p = &a[0];  ,把 a[0]当做一个数组的话,p指向该数组的首地址

    printf("%d\n", (*p)[1]);    //2
    p++;
    printf("%d\n", (*p)[1]);    //5

    return 0;
}


不是很常用。。。。


[fly]存在即是合理[/fly]
2013-04-26 17:39
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
写个更清晰的例子吧

程序代码:
#include <stdio.h>
int main(void)
{
    int a[] = {1, 2, 3};
    int (*p)[3] = NULL;
    p = &a;

    printf("%d\n", (*p)[1]);    
    printf("%d\n", p[0][1]);        //实验

    return 0;
}


[fly]存在即是合理[/fly]
2013-04-26 17:45
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
得分:0 
以下是引用azzbcc在2013-4-26 17:39:53的发言:

数组指针,是指向数组的指针
 
#include  
int main(void)
{
    int a[][3] = {{1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}};
    int (*p)[3];    //声明数组指针,数组长度必须为 3
    p = a;//或p = &a[0];  ,把 a[0]当做一个数组的话,p指向该数组的首地址
 
    printf("%d\n", (*p)[1]);    //2
    p++;
    printf("%d\n", (*p)[1]);    //5
 
    return 0;
}
 
不是很常用。。。。
声明数组指针,数组长度必须为 3
int (*p)[2];//数组长度为 2不行吗?
#include<stdio.h>//这个可以编译通过啊,大牛
int main(void)
{
   int (*p)[2];
   return 0;
}
2013-04-26 17:50
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
得分:0 
谢谢了
2013-04-26 17:51
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
得分:0 
(*p)[3] = NULL;
 NULL这是什么意思
2013-04-26 17:56
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
以下是引用jokerskill在2013-4-26 17:50:33的发言:

声明数组指针,数组长度必须为 3
int (*p)[2];//数组长度为 2不行吗?
#include<stdio.h>//这个可以编译通过啊,大牛
int main(void)
{
   int (*p)[2];
   return 0;
}


程序代码:
#include <stdio.h>

int main()
{
    int (*p)[2];
    int a[3], b[2];

    p = &a;    //ERROR
    p = &b;    //RIGHT
    return 0;
} 


大牛不敢当。。。


[fly]存在即是合理[/fly]
2013-04-26 17:58
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
以下是引用jokerskill在2013-4-26 17:56:45的发言:

(*p)[3] = NULL;
 NULL这是什么意思


p本质上是一个指针,把它初始化为空


[fly]存在即是合理[/fly]
2013-04-26 17:59
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
得分:0 
#include <stdio.h>//有一个警告

int main()
{
    int (*p)[2];
    int a[3], b[2];

    p = &a;    //ERROR
    p = &b;    //RIGHT
    return 0;
}
2:
#include <stdio.h>//有一个警告

int main()
{
    int (*p)[2];
    int a[3], b[2];
    p = &b;    //RIGHT
    return 0;
}
2:
#include <stdio.h>//没有警告

int main()
{
    int (*p)[2];
    int a[3], b[2];
    p = &b;    //RIGHT
    return 0;
}
2013-04-26 18:04
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
得分:0 
#include <stdio.h>//没有警告

int main()
{
    int (*p)[2];
    int a[3], b[2];
    p = &b;    //RIGHT
    printf("%d",p);//这里有错误,怎样正确现示他的值
    return 0;
}
2013-04-26 18:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405600-1-1.html




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

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