最新评论
loveTechn 2012-05-15 13:12
其实lz可以多读几次嘛。。
const pStr p2和const long x本质上没有区别,都是对变量进行只读限制。x是一个常量。它初始话之后是不可以改变的。
const pStr p2的含义是:限定数据类型为char *的变量p2为只读。
就可以理解为p2是一个常量。p2自身是不可以改变的。但它的类型是pStr是一个char *,说明它指向的数据是char,不是const char。说明p2指向的数据是可改的。。
loveTechn 2012-05-15 13:01
@Maxfong
鄙人比较愚笨。。有话直说。。什么标题不标题的。。
而且只有红色部分才是lz的。。黑的都是引用的
loveTechn 2012-05-15 12:54
@Maxfong
但是p1可以移动。。但是p1却不能修改。。p2可以改。。可是不能移动。。我不懂怎么把指针的++操作说成了对char数组的操作了。。。
下面是代码。。我是用VS2010测试的。。不知道其他的编译器怎么样。。
#include<stdio.h>
int main(){
typedef char * pStr;
char string[4] = "abc";
const char *p1 = string;
const pStr p2 = string;
p1[1] = 'f';
p1++;
p2[2] = 'e';
p2++;
printf(p1);
printf(p2);
return 0;
}
下面是错误:
1>c:\test\typedef.cpp(8): error C3892: “p1”: 不能给常量赋值
1>c:\test\typedef.cpp(11): error C3892: “p2”: 不能给常量赋值
鄙人不才。。不会英语。。中文版。。
loveTechn 2012-05-15 12:15
@Maxfong
p2++是错的。。p2本来就是一个指针。。而且是一个const。。就是说是一个常量指针。。你觉得一个const常量初始化之后还可以++吗。。。上面的解释是错的。。不知道是看什么书的。。你可以弄个程序看看。。我贴一下我刚才test的代码。。
#include<stdio.h>
int main(){
typedef char * pStr;
char string[4] = "abc";
const char *p1 = string;
const pStr p2 = string;
p1++;
p2[2] = 'e';
printf(p1);
printf(p2);return 0;
}
p2指针可以对string进行修改。。可以p2不能动。。他是一个const常量!!!!!!!!!!!!!!!
Maxfong 2012-05-15 11:19
@loveTechn
我怎么感觉你这个解释和lz的疑问相反呢?还是我理解错误。lz说的是p2错误,你是说p2正确~
loveTechn 2011-10-29 15:19
最后那里,我来解释一下吧。。。
const char *p1 = string 意思是说一个指向const char类型的指针。。
p1指针是一个变量。他可以指向任意的char对象。就算不是const定义的char也可以,p1可以指向不同的char对象,因为他是一个变量。但他无论是指向const char对象还是char对象。都不能改变其指向对象的值。就是说上例子p1不能对string做修改。只能读取string的值。
而
typedef char *pStr
const pStr p2 = string 这里是typedef和指针共用时的坑爹指出。
const pStr p2 = string
pStr const p2 = string
char* const p2 = string 上面3个语句是一个意思。
就是说p2是一个指向非const、char类型的对象的const指针。p2初始化之后就不能够指向第二个对象。但p2可以对string的值进行修改。。
paopaonn88 2010-07-04 12:36
请问一下Mesh *pMesh = &triobj->GetMesh();中的&triobj需要如何获取呢?
安羽. 2010-06-30 18:33
@楼主
我手上有
《计算机图形学的概念与方法》中文
《计算机图形学的算法基础》中文
《游戏开发图形学》英文
需要请联系QQ:80699694
齐次坐标 写了这么多还是没谈到核心呀,只是些概念与结论而已。
没谈到向量与矩阵相乘时齐次坐标能够清晰表示位移(只有看到了推导过程,才会明白齐次坐标的妙处)及在多次变换中化繁为简的作用,这才是齐次坐标本源。
