免费的黄冈网站有哪些平台?,做爰片的网站,做二手家电网站怎样,网页加速器浏览器通过前面的学习#xff0c;我们已经对c语言有了一个初步的认识 接下来#xff0c;我们继续学习。进入下一个阶段#xff0c;指针。这个部分的知识较多#xff0c;可能学习起来有些吃力#xff0c;但是#xff0c;从简到难#xff0c;我们慢慢学习。 一.指针的概念
导入…通过前面的学习我们已经对c语言有了一个初步的认识 接下来我们继续学习。进入下一个阶段指针。这个部分的知识较多可能学习起来有些吃力但是从简到难我们慢慢学习。 一.指针的概念
导入:当我们要找什么东西时要先知道他的地址同样在内存中也有不同的地址来存放内容。
这时就要介绍取地址操作符格式像0x006FFD70int占4个字节是16进制
int * pa
int:pa指向的对象是int类型的
*:说明pa是指针变量
pa:是指针变量
int *:指针类型
*pa:通过pa中存放的地址找到指向的空间
指针变量的大小与类型无关相同平台下大小相同
指针的类型决定了一次能操作几个字节
double * 8
short * 2
int * 4
char * 1
二.指针-整数
#includestdio.h
int main()
{int n 0;char* pc (char*)n;int *pi n;printf(%p\n,n );printf(%p\n, pc);printf(%p\n, pc 1);printf(%p\n, pi);printf(%p\n, pi 1);return 0;
}
结果如下 三.void *指针
不能直接进行指针的-整数和解引用运算
解引用运算:pa 10
指针的-:pa 1
四.const修饰指针
1.不能修改(在语法上)
const int m 0;
2.const和*的位置
void test1()
{int n 10;int m 20;int* p n;*p 20;p m;
}
void test2()
{int n 10;int m 20;const int* p n;*p 20;p m;
}
void test3()
{int n 10;int m 20;int* const p n;*p 20;p m;
}
void test4()
{int n 10;int m 20;int const * const p n;*p 20;p m;
}
int main()
{test1();test2();test3();test4();return 0;
}
会出现如下错误 3.野指针
(1)未初始化
(2)越界访问
(3)指针指向的空间释放
int* test()
{int n 100;return n;
}
int main()
{int* p test();printf(%d\n, *p);return 0;
} (4)NULL
c语言中定义的一个标识符常量值是00也是地址
五.传值调用和传址调用
只需要主调函数中的变量值来首先计算 ––传值调用
函数内部要修改主调函数中的变量的值 ––传址调用
void Swap1(int *px, int *py)
{int tep 0;tep *px;;*px *py;*py tep;
}int main()
{int a 0;int b 0;scanf_s(%d %d, a, b);printf(%d %d\n, a, b);Swap1(a, b);printf(%d %d\n, a, b);return 0;
} 六.有关数组的指针
1.例外
sizeof数组名这里的数组名是整个数组计算的是整个数组的大小单位是字节
数组名这里的数组名表示的是整个数组取出的是整个数组的地址
int main()
{int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf(arr[0] %p\n, arr[0]);printf(arr[0] 1 %p\n, arr[0] 1);printf(arr %p\n, arr);printf(arr 1 %p\n, arr 1);printf(arr %p\n, arr);printf(arr 1 %p\n, arr 1);return 0;
}
结果如下 3.一维数组传参的本质
传递数组首元素的地址
void test(int arr[])
{int sz2 sizeof(arr) / sizeof(arr[0]);printf(sz2 %d\n, sz2);
}int main()
{int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int sz1 sizeof(arr) / sizeof(arr[0]);printf(sz1 %d\n, sz1);test(arr);return 0;
}
运行结果 在main函数中testarr传递的并非是数组而是数组首元素的地址也就是说在test函数中形参并没有创建数组而是一个指针地址。