标题:数组指针不懂,求解
只看楼主
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:9 
指针要弄清楚它的运算符,与指针相关的运算符有两种:& 和 *;
比如:int *p,count=1;
& 运算符是返回变量的地址,p=&count;
* 运算符是作用在指针变量上,返回其所指对象的值,*p,经过上一个步骤,*p 即为count。

三十年河东,三十年河西,莫欺少年穷!
2013-04-26 18:08
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
回复 9楼 jokerskill
我的意思是

int (*p)[size];
int a[Size];
p = &a;


上面的代码要正常运行,两个size值必须相同


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

#include <stdio.h>//没有警告

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


我说过了啊,p本质是一个指针,指针本身的值应该是一个地址,好像是整型?不记得了

这个指针指向的是一个数组。。。


[fly]存在即是合理[/fly]
2013-04-26 18:18
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
得分:0 
我的意思是
程序代码:
int (*p)[size];//size是尺寸,大小,长度的意思
int a[Size];//size是尺寸,大小,长度的意思
p = &a;


上面的代码要正常运行,两个size值必须相同
int (*p)[3];
int a[3];
p = &a;

#include<stdio.h>
int main(void)
{
   int a=10,(*p)[2]=a;//错误,难到数组指针不可以被一个变量赋值
   return 0
}
#include<stdio.h>
int main(void)
{
   int a=10,(*p)[2];
   (*p)[2]=a;//错误,难到数组指针不可以被一个变量赋值,只被一个数组的名赋值
   return 0
}
#include <stdio.h>

int main()
{
    int (*p)[2];
    int a[2];
    p = &a;    //正确,数组指针只能被一个数组名赋值,是这样的吗?
    return 0;
}
2013-04-26 18:59
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
得分:0 
#include<stdio.h>
int main(void)
{
   int a=10;
   int (*p)[2];
   (*p)[2]=20;//错误,一个常量也不可以赋值给一个数组指针
   return 0
}
2013-04-26 19:22
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
得分:9 
数组指针是指向一个数组,应该先让其指向一个数组,因为是数组指针,所以不能用变量初始化,再向其赋值。

[ 本帖最后由 笑傲 于 2013-4-26 20:32 编辑 ]

练就一身本领,只为笑傲江湖!
2013-04-26 20:26
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
得分:9 
数组指针只能指向数组!

    int c;
    int *t = &c;   //正确,指针t指向的是变量,*t是指向的地址的值,t 是地址的值
                   //定义时赋值是把c地址赋给t而不是 *t,定义时 * 只起定义作用

    //其实数组指针可以看作是一个二维指针,比如int (*q)[8]的q就是二维指针
    int b[8];
    int (*q)[8] = &b;   //正确,既然q是二维指针,而b就是一维指针,当然得加取址符 &

    int a[5][6];
    int (*p)[6] = a;   //正确,a 当然就是二维指针了,你懂的

    其实我真没不知道你想问什么,呵呵。

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-04-26 22:17
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
难道是这个、

char a = 's';
int *p = &a;//ERROR


[fly]存在即是合理[/fly]
2013-04-26 23:04
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
得分:9 
学习下
2013-04-28 08:44
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:9 

人生是一场错过 愿你别蹉跎
2013-04-28 12:20



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




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

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