指针与数组
指针减指针得到的数的绝对值是中间元素个数。
数组关系运算:(跟建议第一种写法)
#define N_VALUES 5
float values[N_VALUES];
float* vp
for(vp=&values[N_VALUES];vp>&values[0];)
{
*--vp=0;
}
for(vp=&values[N_VALUES];vp>=&values[0];vp--)
{
*vp=0;
}
当指针用于数组关系运算时,C语言标准规定,允许指向数组最后一个元素后面的那个内存位置的指针比较,但不允许与指向第一个元素之前的那个内存位置的指针比较。
#include<stdio.h>
int main(void)
{
int arr[10]={0};
printf("%p\n", arr);//地址.首元素地址
printf("%p\n", &arr[0]");
printf("%p\n", &arr"S);
return 0;
}
除了以下两种情况数组名表示的不是首元素:
1、&数组名 数组名不是首元素的地址,表示整个数组。&数组名:取出的是整个数组的地址
2、sizeof(数组名) 数组名表示整个数组 sizeof(数组名)
二级指针
#include<stdio.h>
int main(void)
{
int a=10;
int*pa=&a;
int**ppa=&pa;//ppa就是二级指针
return 0;
}
int * * ppa:第二个 * 表示ppa是指针,而前面的int * 表示指针ppa指向的类型
多级指针
和二级指针一样,如:
int***pppa:三级指针
……
指针数组
例如整形数组用于存放整形、字符数组用于存放字符,指针数组是指存放指针的数组
上代码:
#include<stdio.h>
int main(void)
{
int a=10;
int b=20;
int c=30;
int arr[3]={a,b,c};//整形数组
int* arr2[3]={&a,&b,&c};//指针数组
for(int i=0;i<3;i++)
{
printf("%d ", *(arr2[i]))
}
return 0;
}
标签:arr,int,vp,数组名,数组,指针 来源: https://www.cnblogs.com/yebingfei1/p/15856485.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。