网站的注册和登录界面怎么做,分销网站制作条件,网站设计班培训,网站开发工程师年薪多少C 语言指针
在本教程中#xff0c;您将学习指针。什么是指针#xff0c;如何使用它们以及在示例的帮助下使用它们时可能遇到的常见错误。
指针是 C和C 编程的强大功能。在学习指针之前#xff0c;让我们学习一下C语言编程中的地址。
C 语言地址
如果程序中有变量var您将学习指针。什么是指针如何使用它们以及在示例的帮助下使用它们时可能遇到的常见错误。
指针是 C和C 编程的强大功能。在学习指针之前让我们学习一下C语言编程中的地址。
C 语言地址
如果程序中有变量var则var将在内存中提供其地址。
使用scanf()函数时我们已多次使用地址。
scanf(%d, var);在此用户输入的值存储在var变量的地址中。让我们举一个可行的实例。
#include stdio.h
int main()
{int var 5;printf(var: %d\n, var);// 注意在var之前使用printf(address of var: %p, var); return 0;
}输出结果
var: 5
var地址: 2686778**注意**运行上面的代码时您可能会获得其他地址。
C 语言指针
指针指针变量是用于存储地址而非值的特殊变量。
指针语法
这是我们如何声明指针的方法。
int* p;c在这里我们已经声明了一个int类型的指针p。
您也可以通过以下方式声明指针。
int *p1;
int * p2;让我们再举一个声明指针的实例。
int* p1, p2;在这里我们声明了一个指针p1和一个普通变量p2。
给指针分配地址
让我们举个实例。
int* pc, c;
c 5;
pc c;在此将5分配给c变量。并且将c的地址分配给pc指针。
获取指针所指向的值
为了获得指针所指向的内容的值我们使用了解引用运算符*。例如
int* pc, c;
c 5;
pc c;
printf(%d, *pc); // 输出: 5此处c的地址已分配给pc指针。为了获取存储在该地址中的值我们使用了*pc。
改变指针指向的值
让我们举个实例。
int* pc, c;
c 5;
pc c;
c 1;
printf(%d, c); // 输出: 1
printf(%d, *pc); // 输出: 1我们已经将c地址分配给了pc指针。
然后我们将的值更改c为1。由于pc和的地址c相同因此*pc得到1。
让我们再举一个实例。
int* pc, c;
c 5;
pc c;
*pc 1;
printf(%d, *pc); // 输出: 1
printf(%d, c); // 输出: 1我们已经将c地址分配给了pc指针。
然后我们使用* pc 1;将* pc更改为1。 由于pc和c的地址相同因此c等于1。
让我们再举一个实例。
int* pc, c, d;
c 5;
d -15;pc c; printf(%d, *pc); // 输出: 5
pc d; printf(%d, *pc); // 输出: -15最初使用的地址c分配给pc指针pc c;。因为c是5所以*pc给我们5。
然后使用将地址d分配给pc指针pc d;。由于d是-15所以*pc给我们-15。
示例指针的工作方式
让我们举一个可行的实例。
#include stdio.h
int main()
{int* pc, c;c 22;printf(c的地址: %p\n, c);printf(c的值: %d\n\n, c); // 22pc c;printf(指针pc地址: %p\n, pc);printf(指针pc内容: %d\n\n, *pc); // 22c 11;printf(指针pc地址: %p\n, pc);printf(指针pc内容: %d\n\n, *pc); // 11*pc 2;printf(c的地址: %p\n, c);printf(c的值: %d\n\n, c); // 2return 0;
}输出结果
c的地址: 003FFBF8
c的值: 22指针pc地址: 003FFBF8
指针pc内容: 22指针pc地址: 003FFBF8
指针pc内容: 11c的地址: 003FFBF8
c的值: 2该程序的用法 int* pc, c; 这里创建了一个指针pc和一个普通变量c都是int类型。由于pc和c没有初始化在最初指针pc指向没有地址或一个随机地址。变量c有一个地址但包含随机的垃圾值。 c 22; 这是给变量c赋值22也就是说22被存储在变量c的内存中。 pc c; 这将变量c的地址分配给指针pc。 c 11; 这将11分配给变量c。 *pc 2; 这会将指针pc指向的内存位置的值更改为2。
使用指针时的常见错误
假设您希望指针pc指向c的地址。 然后
int c, *pc;//pc是地址但c不是
pc c; // Error//c是地址但* pc不是
*pc c; // Error//c和pc都是地址
pc c;//c和*pc值
*pc c;这是指针语法初学者经常会感到困惑的示例。
#include stdio.h
int main() {int c 5;int *p c;printf(%d, *p); // 5return 0;
}使用时为什么没有出现错误int *p c;
这是因为
int *p c;相当于
int *p:
p c;在这两种情况下我们都创建了一个指针p(不是*p)并给它赋值c。
为了避免这种混乱我们可以使用如下语句
int* p c;现在您知道了什么是指针您将在下一个教程中学习指针与数组的关系。