| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3153 人关注过本帖, 1 人收藏
标题:几个问题,大家解解看
只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 59楼 BJ_BOY
确实,是我错了,/

我就是真命天子,顺我者生,逆我者死!
2010-08-01 11:13
BJ_BOY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:225
注 册:2010-2-4
收藏
得分:0 
错误总是难免的:)
2010-08-01 11:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
//该地址所代表的或说“捆绑”的内存单元是有大小区别的。

指针是分不清指向的内存单元的大小的,只要 SIZE 是个整型,就会被忽略的吧,
具体我还要 翻书

[ 本帖最后由 BlueGuy 于 2010-8-1 11:30 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-08-01 11:25
BJ_BOY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:225
注 册:2010-2-4
收藏
得分:0 
指针是分不清,需要的是程序员能分清呀:)呵呵。如果指针不必区分所指向的内存大小,那如何解释下面的代码:
1) int (*p)[10]; //p是一个指向40个字节空间的int型指针
2)
#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    int a[10];
    int (*p)[10] = &a; //这里能是int (*p)[10] = a;吗?能是int (*p)[10] = a[0];吗?
   
    return 0;
}

我个人认为,读老谭的书的人,都会忽视指针是需要考虑它所指向空间的大小的!而如果忽视这一问题,在实际编程时,很多事情都会迷惑,很多情况下,都会埋下“执行时错误”的隐患!
2010-08-01 11:34
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 64楼 BJ_BOY
呵呵, 一个随感,与题目关系不大。
不过,谭浩强的 那是书吗? 草纸哦,。

我就是真命天子,顺我者生,逆我者死!
2010-08-01 11:39
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用BJ_BOY在2010-8-1 11:34:02的发言:

指针是分不清,需要的是程序员能分清呀:)呵呵。如果指针不必区分所指向的内存大小,那如何解释下面的代码:
1) int (*p)[10]; //p是一个指向40个字节空间的int型指针
2)
#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    int a[10];
    int (*p)[10] = &a; //这里能是int (*p)[10] = a;吗?能是int (*p)[10] = a[0];吗?
   
    return 0;
}

我个人认为,读老谭的书的人,都会忽视指针是需要考虑它所指向空间的大小的!而如果忽视这一问题,在实际编程时,很多事情都会迷惑,很多情况下,都会埋下“执行时错误”的隐患!


数组指针。

看看下面的数据申明你能搞定几个。
程序代码:
float (**def)[10];
double *(*gh)[10];
double (*f[10])();
int *((*b)[10]);
long (*fun)(int)
int (*(*F)(int ,int ))(int)
2010-08-01 12:00
BJ_BOY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:225
注 册:2010-2-4
收藏
得分:0 

float (**def)[10]; //数组指针。数组中每个元素为指向float*指针的指针。
double *(*gh)[10]; //指向数组的指针。数组共有10个元素,每个元素为double型指针。
double (*f[10])(); //数组指针。该数组中包括10个函数指针,每个指针指向一个函数(函数返回值为double,形参无)
int *((*b)[10]);  //指向指针的指针。该指针指向的指针为:指向10个int型元素的数组指针
long (*fun)(int)  //函数指针。所指函数的返回值为long,形参为int
int (*(*F)(int ,int ))(int) //函数指针。所指函数返回一个指向函数指针的指针

见笑。
2010-08-01 12:15
zisefengye
Rank: 5Rank: 5
等 级:职业侠客
帖 子:167
专家分:386
注 册:2010-6-27
收藏
得分:0 
受益匪浅,多谢各位的指正。
2010-08-01 12:18
BJ_BOY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:225
注 册:2010-2-4
收藏
得分:0 
另外,请devil_W参考:http://www.cs.helsinki.fi/u/narayana/cprog04/olli-ex4-qn1.txt
及http://www.cs.helsinki.fi/u/narayana/cprog04/
2010-08-01 12:19
BJ_BOY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:225
注 册:2010-2-4
收藏
得分:0 
int (*(*F)(int ,int ))(int) //可能有问题,呵呵,不好意思!
2010-08-01 12:36
快速回复:几个问题,大家解解看
数据加载中...
 
   



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

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