c语言返回数组指针(指针c语言给数组赋值) | 您所在的位置:网站首页 › 数组名 指针 › c语言返回数组指针(指针c语言给数组赋值) |
关键词:指针、数组、指针和数组、指针操作、标准库函数开始和结束; 指针和数组: 在C语言中,指针与数组密切相关。 当使用数组时,编译器实际上将其转换为指针。 数组还有另一个特性:编译器会自动用指向数组第一个元素的指针替换数组名。 string StringArray[10]={'A1 ',' A2 ',' A3 ',' A4 ',' A5 ',' A6 ',' A7 ',' A8 ',' A9 ',' A10 ' }; string * p=StringArray//相当于p=stringgarray[0],所以在C语言中,数组操作就是指针操作。 所以这些做法是等价的: 1. for(int I=0;i 10I){ 0 cout StringArray[I]' '; }2. string * ArrayEnd=end(string array); for(string * p=StringArray;p ArrayEndp){ 0 cout * p“”; }3. string * ArrayBegin=StringArray for(int I=0;i 10I){ 0 cout *(Arraybegin I)' '; }4. for(int I=0;i 10I){ 0 cout Arraybegin[I]' '; } 指针操作: 指针可以在大小上进行比较,可以加或减一个整数,可以相互增加、减少和减少。 注意:这些只能在相同类型的指针之间进行。 1.两个相同类型的指针变量可以在大小上进行比较。 P1地址p2,p1 p2值为真。地址p1=地址p2,p1==p2值为真地址p1地址p2,p1 p2值为真2。可以减去两个相同类型的指针变量。 两个T *型指针p1和p2p1-p2=(地址P1-地址p2)/sizeof(T)注意,两个指针相减的结果不是两个指针所在物理地址的相减结果。 c是强数据类型的,编译器会根据指针指向的变量类型进行相应的调整。 因此,两个整形指针相减的结果是实际物理地址的差,然后除以4。 3.从指针变量中加或减一个整数的结果就是指针。 P3360T * n 3360整型变量或常量的指针p 3360T *指向地址的指针:p n sizeof(T)4。指针变量可以自动增加或减少。 T*指针p指向地址np,p:p指向n sizeof (t) p-,-,p : p指向n sizeof (t) 5。下标操作符“]”可以操作指针 p是T *类型的指针,n是整数变量或常数p[n]相当于*(p ^ n) 指针和机器物理地址: 指针可以理解为一种数据类型,与它所指向的变量类型有很强的相关性; 所以指针变量并不完全等于其机器物理地址的值。 因此,指针的-与机器地址的-不同。 字符串*类型的指针ArrayBegin加1后,实际物理地址增加32,即字符串的字节数。 ArrayBegin:0x7ffc061df210 ArrayBegin 1 :0x7ffc061df230如果想要获取指针的实际物理地址, 强制类型转换可以用在C、 将指针转换为long类型的整数地址; long long intatraybegin _ address=(long long)intArrayBegin; 示例代码:中的其他详细信息 在cout中,十六进制可用于将指针直接输出为十六进制数,对应于其编译后的实际物理地址。 指针被强制转换为长整型;如果使用int,可能会出现溢出,导致编译错误。 您可以使用标准库函数begin和end来获取数组第一个元素的地址和最后一个元素地址之后的地址。 其他细节请直接查看源代码。 程序源代码: #包含iostream #包含字符串 #包含迭代器 使用命名空间标准; int main() { string StringArray[10]={'A1 ',' A2 ',' A3 ',' A4 ',' A5 ',' A6 ',' A7 ',' A8 ',' A9 ',' A10 ' }; 字符串*Arra yEnd = end(StringArray) ; for (int i=0; i < 10 ; ++i ) { cout |
CopyRight 2018-2019 实验室设备网 版权所有 |