指针 和 一维数组
一维数组名是个指针常量 e.g:int a[5]={1,2,3,4,5};//输出a & a[0] 发现 2个值相等
一维数组名存放的是一维数组第一个元素的地址
下标和指针的关系若a 是指针变量 那么 a[x]等价与*(a+x)//a = &a[0] *a=a[0]
一维数组需要2个参数:
数组第一个元素的地址 数组的长度
e.g:void pArr(int *pArr,int len)//pArr是一维数组名,len是数组的长度
#include <stdio.h>
void OutArr(int *pArr,int len)
{
int i;
for (i=0;i<len;++i)
printf("%d\n",pArr[i]);
}
int main(void)
{
int a[5] = {1,2,3,4,5};
OutArr(a,5);
return 0;
}
指针变量的运算(指针变量是一个操作受限的变量)
指针变量 不能相加 相乘 相除 只能做减法(相减也是需要收到限制)
若2个指针变量指向的是同一块连续空间中的不同存储单元,才可以相减
e.g:
#include <stdio.h>
int main(void)
{
int a[5] = {1,2,3,4,5};
int *i,*j;
i = &a[1];
j = &a[4];
printf("i&j相隔%d个单元\n",j-i);
return 0;
}
指针变量占用几个字节 sizeof:可以返回数据类型所占的字节数
#include <stdio.h>
int main(void)
{
int a = 7;
char b = 'b';
double d = 10.5;//abd是不同类型的变量
int *i = &a;
char *j = &b;
double *k = &d;//ijk是不同类型的地址
printf("%d %d %d\n",sizeof(a),sizeof(b),sizeof(d));//4 1 8
printf("%d %d %d\n",sizeof(i),sizeof(j),sizeof(k));//4 4 4
return 0;
}
指针变量无论它指向什么类型的变量 该指针变量本身只占4个字节
一个变量的地址使用该变量首字节的地址表示
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。