总结了一些指针易出错的常见问题(二)
生活随笔
收集整理的這篇文章主要介紹了
总结了一些指针易出错的常见问题(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
4.指針與數組
?一些常見的錯誤觀點是數組和指針是完全可以互換的。盡管數組名字有時候可以當指針來使用,但是數組的名字不是指針。
數組是能用索引訪問的同質元素連續集合。(連續是指數組的元素在內存中是相鄰的,中間不存在空隙同質是指元素是同一類型)
指針在處理數組時很有用,既可以用指針指向已有的數組,也可以從堆上分配內存然后把這塊內存當做一個數組使用。
數組/指針表示法
給數組地址加1實際加了4,也就是整數的長度。
#include<iostream> using namespace std; int main() {int vector[5]={1,2,3,4,5};int *pv=vector;int value=4;for(int i=0;i<5;i++){*pv++ *=value;}pv=vector;for (int i=0;i<5;i++)cout<<*(pv+i)<<endl;}指針和數組的區別
int vector[5]={1,2,3,4,5};int *pv=vector;vector[i]生成的代碼和*(vector+i)生成的不一樣,vector[i]表示法生成的機器碼從位置vector開始,移動i個位置,取出內容。而*(vector+i)表示法生成的機器碼則是從vector開始,在地址上增加i,然后取出這個地址中的內容。
sizeof操作符對數組和同一個數組的指針操作也是不同的。
sizeof(vector)=20; ?//數組分配的字節數
sizeof(pv)=4; ? ? ? ? ? //指針長度
如果從堆上分配內存并把地址賦給一個指針,那就肯定可以對指針使用數組下標并把這塊內存當成一個數組。
int *pv=(int*) malloc(5*sizeof(int));for(int i=0;i<5;i++){pv[i]=i+1;}/
for(int i=0;i<5;i++)
{
*(pv+i)=i+1;
}
轉載于:https://www.cnblogs.com/iloverain/p/5582739.html
總結
以上是生活随笔為你收集整理的总结了一些指针易出错的常见问题(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用选择器语法来查找元素 - 你想使用类
- 下一篇: html、css 【珍藏】