C语言之指针篇

xiaoxiao2021-02-28  90

赋值(Assignment)     可以把一个地址赋给指针变量。通常使用数组名或地址运算符&来进行地址赋值。  取值(dereferencing)     运算符*可取出指针变量指向地址中存储的数值。  取指针变量的地址(Taking a pointer address)     指针变量同其他变量一样具有地址和数值。使用运算符&可以得到指针本身的地址。  将一个整数加给指针变量     可以使用+运算符来把一个整数加给一个指针变量。此时,整数会和指针变量所指类型的字节数相乘,然后乘得的结果会加到初始地址上。  增加指针变量的值

    可以通过一般的加法或增量运算符来增加一个指针变量的值。

从指针变量中减去一个整数     可以使用-运算符来从一个指针变量中减去一个整数。指针变量必须是第一个操作数。  减小指针变量的值     指针变量的减量运算。  求差值     可以求出两个指针变量间的差值。通常对分别指向同一个数组内两个元素的指针变量求差值,以求出元素之间的距离。差值的单位是相应类型的大小。  比较     可以使用关系运算符来比较两个指针变量的值(前提是两个指针变量具有相同的类型)。

#include <stdio.h> // 指针变量的定义 int main1() { int a; // 定义一个指针变量, // *表示这个变量是指针,内部必须要存地址 // int 这个指针指向的类型是 int 类型数据 int *p; p = &a; printf ("&a = %p\n", &a); printf ("p  = %p\n", p); printf ("&p = %p\n", &p); return 0; } // 指针变量的大小 int main2() { int a; int *p = &a; char ch; char *pch = &ch; // 指针内部存的是地址,32位情况下,地址都是32位的 // 所以在32位编译器下,指针都是4个字节 printf ("p   = %d\n", sizeof(p)); printf ("pch = %d\n", sizeof(pch)); return 0; } // 指针变量的取值 int main3() { int a = 10; int *p = &a; printf ("a = %d\n", a); // 在变量定义的时候,*代表变量的类型是指针 // 在使用指针变量的时候,*代表去指针指向的那一块内存的值 // * + 地址, 代表那个那个地址所表示的内存 printf ("*p = %d\n", *p); *p = 200; printf ("a = %d\n", a); return 0; } int main() { int a = 10; int b = 20; int *pa = &a; int *pb = &b; // 通过 pa 与 pb 交换 a 与 b 的值 int tmp = *pa; *pa = *pb; *pb = tmp; return 0; } // * & int main() { int a = 10; int *p = &a; // *&a ==> *(&a) ==> *p ==> a // &*p ==> &(*p) ==> &a ==> p return 0; }

转载请注明原文地址: https://www.6miu.com/read-70007.html

最新回复(0)