您的位置:首页 > 其它

关于指针运用的一点总结

2014-10-11 12:07 621 查看
----------------------------

int *p,q;     //此处只声明了p为一个指向整形变量的指针,q为整型变量

int* p,q;    //同上

char *string

此处string为一个指针变量。

char **strings

此处strings为一个二级指针变量

string=*strings

此处string获得了一个地址,此地址是*strings,是strings指针所指向的。

------------------------------

 二维数组arr[2][3]

 arr是指向指针的指针(指针所储存的就是地址,所以某量的指针就是某量的地址)

i行j列的值

*(*(arr+i)+j)   //arr+i是指向第i行首地址的指针,*(arr+i)即为第i行的首地址

*(*arr+3*i+j)   //所以arr为指向第0行首地址的指针,*arr为第0行首地址

*(a[i]+j)       //第i行的首地址为arr[i],则arr[0]为第0行首地址

a[i][j]

--------------------------------------

int array[10];

int *ap=array+2

此时ap代表array+2

*ap=*(array+2)=array[2]=ap[0]

*(ap+2)=*(array+4)=array[4]=ap[2]

*ap+2=array[2]+2

ap[-1]=*(ap-1)=array[1]

注意:array是个指针常量,对其进行array++运算是错误的。

------------------------------------------------

储存方式:

char keywords[]{

"do",

"for",

"if",

"register",

"return",

"switch",

"while"

};

char keywords[][9]{

"do",

"for",

"if",

"register",

"return",

"switch",

"while"

};

以上两种声明方式的储存方式不同,第一种是以连续的方式储存,第二种是以矩阵的方式储存。

-------------------------------------------------------

字符串常量实际上表示一个指针常量

例如:

   "xyz"+1     //表示y的地址

  *("xyz"+1)    //表示字符y

  "xyz"[1]      //同样表示字符y

------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针 c 二维数组