C++指针定义

来源:百度知道 编辑:UC知道 时间:2024/06/10 21:37:58
我不明白为什么C++指针初始化是这样的
-----------------
int n = 6;
int *p = &n;
-----------------

在我以前学的C语言看来。指针初始化无一都是
int n = 10;
int *p;
p = &n;
这种写法。

所以我觉的改成 int *p = n; 这样声明指针 才自然.
符合我们习惯比如 *p = *p + 6;
而不是C++的目前的 int *p = &n;

谁能告诉我为什么?
int n = 10;
我的意思是这两句的区别
int *p = &n;
int *p = n;
这两句C++只能接受一个.

int n = 10;
int *p = &n; //不管是C还是C++这句都是对的
int *p = n; //不管是C还是C++这句都是错的!!!类型不匹配

在不同的地方*表示的含意是有区别的。
当*出现在类型定义时(类型之后的地方),如int *p;那这是告诉编译器变量p的类型为int类型的指针(int*),所以你还可以这样写int* p;或int * p;都是可以的。
而直接出现在变量后(不是定义时),就表示解引用.

int *p;
p = &n;
是先定义p为一个int型的指针,然后让p等于(指向)整型n的地址

而int *p = &n; 变量p实际上是在定义的同时赋了初值,因此这里p前面的*是要和类型(也就是int)合起来看,表示p是一个int型的指针!此时,千万不要把*和p一起来看!

所以
int* p; //我有意把*写得和int靠拢一些:),强调int*是一种类型
p = &n;

int* p = &n;
是一回事

就好比:
int i;
i = n;

int i = n;
是一回事

而*p = *p + 6;中p前面的*就是解引用符了

不要把概念搞混了啊,呵呵!

  为了说清楚什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。
如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定长度的空间。例如,C++编译系统一般为整型变量分配4个字节,为单精度浮点型变量分配4个字节,为字符型变量分配1个字节。内存区的每一个字节有一个编号,这图中就是“地址”。

关于C语言指针定义的问题 为什么定义指针?? C++指针定义 ~~~~~~C++~~~~~指针~~~~ 高分求一个使用宏定义和指针变量的c语言题,问题如下: C语言里怎么在数组里定义汉字变量 和指针指向汉字数组? c中指针的指针 在C++中的定义字符串指针后,在没有用const,系统是不是默认为指向常量的指针. C语言,指针问题 C语言 指针