C指针和整数的加减法运算
- 其他
- 2025-08-28 08:18:02

1-1 指针和整数的加减法运算
//获取: <stat>[,[<tac>],[<ci>],[<AcT>]] +CGREG: 2,5,"27CA","74FD",0 pos[0] = strstr(single_cmd.tx_buf, ","); //第1个,后面为stat pos[1] = strstr(pos[0] + 1, ",\""); // “,/”后面为[<tac>] pos[2] = strstr(pos[1] + 4, ",\""); // “,/”后面为[<ci>] pos[3] = strstr(pos[2] + 4, ","); //第4个,后面为[<act>]
需求主要是源于这部分的代码:
起初对于该段代码的疑点主要是在这个位置:strstr(pos[0] + 1, ",\""); 这里的pos[0] + 1 在数组中的含义是当前数组下标对应的值+1,但是当前的代码工程中这是一个char * 类型的指针,指针对应的含义是pos[0] 是一个指针数组,每个元素都是一个 char* 类型的指针,它们用来存储通过 strstr 函数找到的子串位置。
1-1-1 实际的案例演示
虽然指针之间的加法是非法的,但指针与整数的加法或减法是合法的,且有明确的语义。
指针与整数的加法:
如果 ptr 是一个指针,n 是一个整数,那么 ptr + n 的结果是一个新的指针,指向 ptr 所指向的数组中第 n 个元素之后的位置。
如果 ptr 指向数组的第 i 个元素,那么 ptr + n 指向第 i + n 个元素。
int arr[] = {10, 20, 30, 40, 50}; int* ptr = &arr[0]; // 指向第1个元素 int* new_ptr = ptr + 2; // 指向第3个元素(值为30)指针与整数的减法:
如果 ptr 是一个指针,n 是一个整数,那么 ptr - n 的结果是一个新的指针,指向 ptr 所指向的数组中第 n 个元素之前的位置。
如果 ptr 指向数组的第 i 个元素,那么 ptr - n 指向第 i - n 个元素。
int* new_ptr = ptr + 2; // 指向第3个元素 int* prev_ptr = new_ptr - 1; // 指向第2个元素(值为20)总结:
指针的减法:合法且有意义,用于计算两个指针之间的元素个数。
指针的加法:非法且未定义行为,不被C语言标准支持。
指针与整数的加法/减法:合法且常用,用于指针的移动操作。
......
C指针和整数的加减法运算由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C指针和整数的加减法运算”