一点整理
2011-03-11 22:58 Rollen Holt 阅读(212) 评论(0) 编辑 收藏 举报/*
* 这个程序说明当我们用vector时候,不能用下标进行赋值,会出现错误:
* error C2374: 'index' : redefinition; multiple initialization
* 但是对于内置的数组类型是可以的。
*/
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// vector<int>data;
// for (vector<int>::size_type index=0;index!=10;++index)
// {
// data[index]=index;
// }
// for(vector<int>::size_type index=0;index!=10;++index)
// cout<<data[index];
int data[10];
for (size_t index=0;index!=10;++index)
{
data[index]=index;
}
for ( index=0;index!=10;++index)
{
cout<<data[index];
}
return 0;
}
尽量避免使用指针和数组以及c风格的字符串,用vector和迭代器以及string类型来代替
把 int 型变量赋给指针是非法的,尽管此 int 型变量的值可能为 0。但允许把数值 0 或在编译时可获得 0 值的 const 量赋给指针
例如这个语句就是错误的: int *pi=1;
指针只能初始化或赋值为同类型的变量地址或另一指针:
double dval;
double *pd = &dval; // ok: initializer is address of a double
double *pd2 = pd; // ok: initializer is a pointer to double
int *pi = pd; // error: types of pi and pd differ
pi = &dval; // error: attempt to assign address of a double to int *
void* 指针
C++ 提供了一种特殊的指针类型 void*,它可以保存任何类型对象的地址:
double obj = 3.14;
double *pd = &obj;
// ok: void* can hold the address value of any data pointer type
void *pv = &obj; // obj can be an object of any type
pv = pd; // pd can be a pointer to any type
void* 表明该指针与一地址值相关,但不清楚存储在此地址上的对象的类型。void* 指针只支持几种有限的操作:与另一个指针进行比较;向函数传递 void* 指针或从函数返回 void* 指针;给另一个 void* 指针赋值。不允许使用 void* 指针操纵它所指向的对象
两个指针减法操作的结果是标准库类型(library type)ptrdiff_t 的数据。与 size_t 类型一样,ptrdiff_t 也是一种与机器相关的类型,在 cstddef 头文件中定义。size_t 是 unsigned 类型,而 ptrdiff_t 则是 signed 整型。
引用也是一个变量,它也占空间了吧。 只不过我么无法访问,编译器自动给我们分配的空间而已。如果我们观察2者的地址的话我们会发现他们的地址也是一样的。这只不过是C++障人耳目的伎俩而已!―――它要让你觉得使用对象的引用和使 用对象本身没什么区别。 从内存中(我没有太好的名词)看引用和指针没什么区别。从编译器的角度来看,有很多不同,比如我们可以知道指针变量的地址(&p),却不能找到引用自身的地址,编译器让
我们感觉(请注意这个词),对引用的操作好像对变量的操作一样直接。
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================