在还没开始学习C语言之前,就听说指针部分是C语言中最难理解的。在学习了指针之后,写下这篇博客来分享一下我关于指针的理解。
在这个例子中,我们首先声明了一个整型变量number并赋值为42。接着,我们声明了一个指向整型的指针变量p。然后,我们使用&运算符获取number的地址,并将这个地址赋给p。通过*p,我们可以访问到p指针指向的值,也就是number的值。我们打印了这个值,然后修改了p指向的值,也就是修改了number的值,并再次打印以确认修改。
在这些例子中,我们声明了各种类型的指针。pInt是一个指向整数的指针,pFloat是指向浮点数的指针,pChar是指向字符的指针。ppInt是一个二级指针,它指向一个整数指针。pFunc和pFuncWithArgs是指向函数的指针,分别表示没有参数和带有两个整数参数的函数。pArray是一个指向含有10个整数的数组的指针。pStruct是指向一个名为MyStruct的结构体的指针。最后,ppFunc是指向函数指针的二级指针。
在这个例子中,我们首先声明了一个整数变量number并为其赋值为42。然后,我们声明了一个指向整数的指针p,并将number的地址赋给了p。通过解引用p(使用*p),我们输出了number的值。
在这个例子中,我们首先创建了一个整数变量value并赋值为42。然后我们创建了一个指向整数的指针p,并将value的地址赋给了p。通过使用*p,我们解引用了指针p,获取了它指向的值,即变量value的值,然后将这个值存储在dereferencedValue变量中,并打印出来。
在这个例子中,我们有一个包含5个整数的数组array。我们首先声明了一个指向整数的指针p,并将其初始化为指向数组的第一个元素。然后,我们通过加减操作移动指针,以访问数组中的不同元素。
在这个例子中,我们声明了两个指向整数的指针p1和p2,并将它们分别初始化为指向数组的首元素和第三个元素。然后,我们使用==操作符来比较这两个指针是否指向相同的内存位置,使用<和>操作符来比较它们指向的位置的相对顺序。
在这个例子中,我们使用了各种关系运算符来比较指向数组元素的指针。由于指针本质上存储的是内存地址,因此这些关系运算符实际上是在比较内存地址的大小。
在上面的代码中,array 是一个整数数组,而 p 是一个指向整数的指针,被初始化为指向 array 的第一个元素。通过 p + 1、p + 2 等,我们可以访问数组中的其他元素,就像使用数组索引一样。
在上面的代码中,p 是一个指向整数的指针,它被初始化为指向 array 的第一个元素。通过指针 p 和指针算术,我们可以访问和修改数组中的元素。例如,*(p + i) 就是访问数组中索引为 i 的元素。同样地,array[i] 在本质上也是通过指针实现的,因为数组名本身就是一个指向数组第一个元素的常量指针。
在上面的代码中,我们定义了一个函数 modifyValue,它接收一个 int 类型的指针作为参数。在 main 函数中,我们声明了一个整数变量 number 并初始化为 10。然后,我们调用 modifyValue 函数,并传递 number 变量的地址(使用 & 运算符获取地址)作为参数。
在这个示例中,createArray 函数负责动态分配一个整数数组,并返回一个指向该数组的指针。在 main 函数中,我们调用 createArray 来创建一个数组,并通过返回的指针来访问和修改数组的元素。
在这个示例中,我们首先定义了一个memorySize变量来指定要分配的内存块大小。然后,我们使用malloc函数来分配指定大小的内存,并将返回的指针存储在dynamicMemory变量中。分配的内存被用来存储一系列字符,然后打印出来。
02-13
01-26
11万+
09-18
5705
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交