Jos*_*osh 3 c++ arrays pointers
我定义了2个变量,一个是指针,另一个是数组
char* ptr;
char* array;
ptr = "12345";
array = new int[5];
for(int i = 0; i < 5; i++)
array[i] = i;
while(*ptr != 0)
cout << *ptr++ << endl;
//Get garbage values
for(int i = 0; i < 5; i++)
cout << ptr[i];
Run Code Online (Sandbox Code Playgroud)
我想知道变量之间的主要区别是什么.当我尝试以"ptr []"数组的方式打印值时,为什么我会得到垃圾值,但是当遍历vales时它完全没问题.我似乎无法理解我的变量"ptr"如何指向5个字符,因为它应该只能指向一个字符.
指针和数组之间有很多区别,但是你得到垃圾的原因是,当你使用ptr
索引时,它已经指向"12345"的空终止符.
每次你这样做:
*ptr++;
Run Code Online (Sandbox Code Playgroud)
ptr
指向它用于指向的下一个元素(即1,2,3,...).当循环结束时,它指向空终止符\0
,然后当您尝试使用它进行索引时i
,它指向未知内存.
我建议您使用临时指针来迭代元素:
const char* ptr; // declaring ptr constant in this case is a good idea as well
...
ptr = "12345";
char *tmp = ptr;
...
while(*tmp != 0)
cout << *tmp++ << endl;
Run Code Online (Sandbox Code Playgroud)