小编nEm*_*mai的帖子

C中的指针声明,有什么区别?

我以为#1

uint8_t* start_ptr, end_ptr;
Run Code Online (Sandbox Code Playgroud)

和#2

uint8_t* start_ptr;
uint8_t* end_ptr;
Run Code Online (Sandbox Code Playgroud)

一般都是一样的。在我看来,他们不是。有人可以指定第一个除了第二个之外做什么吗?

发生了什么:

          if(strncmp(mseq,mseq_a,8) == 0){
              start_ptr = MY_UART_RingBuffer_getReadPointer();
              start_found = 1;

          }

          if(strncmp(mseq+3,mseq_z,5) == 0){
              end_ptr = MY_UART_RingBuffer_getReadPointer();

              if (start_found == 1){
                  if(!MY_UART_RingBuffer_getOverlap()){
                    end_ptr = end_ptr - 6;
                  }
                  else{
                      start_found = 0;
                      continue;
                  }

                ptrdiff_t length = end_ptr - start_ptr;
                  start_found = 0;
              }
          }
Run Code Online (Sandbox Code Playgroud)

在使用 #1 时,编译器会给我这个长度计算:

../Core/Src/main.c:143:32: error: invalid operands to binary - (have 'int' and 'uint8_t * {aka unsigned char *}')
     ptrdiff_t length = end_ptr - start_ptr; …
Run Code Online (Sandbox Code Playgroud)

c pointers declaration

1
推荐指数
1
解决办法
194
查看次数

标签 统计

c ×1

declaration ×1

pointers ×1