| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 834 人关注过本帖
标题:C语言:指针与数组问题!学的好的兄弟姐妹们帮帮忙看下有问题吗?谢谢!
取消只看楼主 加入收藏
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:2 
C语言:指针与数组问题!学的好的兄弟姐妹们帮帮忙看下有问题吗?谢谢!
int **p;
int array[100];
p=&array;
这三条语句有什么问题吗?有问题的话问题是什么?为什么?
搜索更多相关主题的帖子: C语言 
2012-11-23 00:59
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
收藏
得分:0 
以下是引用pauljames在2012-11-23 06:52:38的发言:

没问题
而且如果输出的话,地址值是一样的
printf("p=%p,array=%p,&array=%p",p,array,&array);
因为array是数组第一个元素的首地址,&array是数组的首地址,刚好对应了一个内存单元

我又运行了一遍:
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int **p;
    int array[100];
    p=&array;
    printf("p=%d,&array=%p,array=%p\n",p,&array,array);
    system("pause");
    return 0;
}
发现编译报错啊,说是cannot convert "int (*)[100]"to"int **"in assignment,大概意思就是说不能将数组指针(&array)赋值给二级指针(p),好像说的挺有道理的啊
2012-11-23 11:40
weishen2011
Rank: 2
等 级:论坛游民
帖 子:92
专家分:70
注 册:2012-10-16
收藏
得分:0 
以下是引用lxsjzbd在2012-11-23 15:40:17的发言:

是报错了,想了下应该是array是数组名,而且并没有一块儿内存存储array指针,所以不能这么用&array;
应该是:
int *t;
t=array;
p=&t;
自己用一块儿内存存储array


你的意思应该是这样的吧
int array[100];
int *t=array;
p=&t;
其实这和题目当中的表达的意思一样的啊

我觉得错误的地方还是我在6楼说的那个,就是
int **p;
int array[100];
p=&array;
这里实际上定义的p是一个二级指针,而&array是一个数组指针,显然不能将数组指针直接赋值给二级指针
2012-11-23 18:29
快速回复:C语言:指针与数组问题!学的好的兄弟姐妹们帮帮忙看下有问题吗?谢谢 ...
数据加载中...
 
   



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

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