c++关于指针的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 10:26:06
定义一个指针 int* p;int n; 然后 就用这个指针通过 p+i来存储连续的 数值或者字符串 有时候怎么输出乱码 的不到预期的结果????
难道 访问越界了????、
但是为什么 用数组就不会越界呢???????????

指针用法没什么限制,所以说当你不小心把指针指向了未知的内存,这个时候就要出错了,
数组呢,他末尾隐含一个'\0'这是结束标志,当数组遇到\0,系统就会提示你错误了.例如数组a[5],你想调用数组第6个元素,那系统就回提示错误了.
至于哪个方便呢,我感觉还是指针,自由度高嘛,写程序自由发挥的空间大

因为你没有给p分配空间
你尝试int *p = new int[100];
只要i小于100你怎么存都没有问题。

int* p;是定义了一个指向整数的指针,它只能指向整数或整数数组,不能指向其它类型的变量,故当你用来指向字符串时就会出错。可以另定义一下指针用来指向字符型如char *q;
也可以用void *p;它可以指向任意类型,但一般不建议这样使用。
对于乱码,一般是越界了,也用可能是你在输入数据的过程中输入了不合法的字符。比如需要输入的是整形,你错误地输入了其它类型,这样系统提取数据的时候就会出错,输入的结果就是一堆乱码。对于越界的问题,最简单的办法就是把数组容量定得大一点,但这样比较占用空间。还可以用动态申请空间或用链表实现,但这样点用CPU较大,但小程序这两种方法的不足很难表现出来,建议使用前者。

首先你要给指针分配空间:int *p = new int[100];

其次,要注意输出的是数据,不是指针地址。

数组也会有越界的时候,只是你这里没有越界而已

首先定义一个指针,要初始化;第二:注意定义的指针是什么类型的;第三:数组的最后一位是:\0 ,数组遇到\0,系统就会提示.