0
点赞
收藏
分享

微信扫一扫

指针(2)

规避野指针

1.指针初始化

2.小心指针越界

3.指针指向空间释放即放置NULL

4.指针使用之前前检查有效性

指针运算

指针+-整数

指针-指针   ==两者间元素的个数

指针的关系运算

//创建一个整形数组,完成对应数组的操作
//1.实现函数init()初始化数组权威0
//2.实现print()打印数组的每个元素
//3.实现reverse()函数完成数组的逆方向放置
#include <stdio.h>
void Init(int arr[],int sz)
{
int i=0;
for(i=0;i<sz;i++)
{
arr[i]=0;
}
}
void Print(int arr[],int sz)
{
int i=0;
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
printf("\n");

}
}

void Reverse(int arr[],int sz)
{
int left=0;
int right=sz-1;
while(left<right)
{
int tmp=arr[left];
arr[left]=arr[right];
arr[right]=tmp;
left++;
right--;
}
}
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9};
int sz=sizeof(arr)/sizeof(arr[0]);
//Init(arr,sz);
Print(arr,sz);
Reverse(arr,sz);
Print(arr,sz);
return 0;
}

&arr~&数组名-数组名不是首元素的地址-数组名表示整个数组-&数组名取出的是整个数组的地址

sizeof(arr)/sizeof(arr[0])=sz

sizeof(arr)-sizeof(数组名)--数组名表示整个数组

二级指针

int main()
{
int a=10;
int*pa=&a;
int**ppa=&pa; //这里的ppa就是二级指针
return 0;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9};
int *P=arr;
int sz=sizeof(arr)/sizeof(arr[0]);
int i=0;
for(i=0;i<sz;i++);
{
printf("%d",*(p+i));
}
return 0;
}

指针数组---表示的是数组

数组指针---表示的是指针

C语言中规定允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。


                       指针(2)_i++






举报

相关推荐

0 条评论