【问题标题】:What is pointer Derefrencing in C? [duplicate]什么是 C 中的指针取消引用? [复制]
【发布时间】:2021-05-31 19:45:03
【问题描述】:

我正在学习使用 c 进行递归,并且有一个关于数组的问题,例如:

void main(){
     char str[100];
     --snip--
     if(*str == 'c')
        count++;
     --snip--
}

这里 *str 是从指向字符串 str 的第一个字符的指针中检索到的值。

我的问题是什么是指针解引用,我可以这样做:

--snip--
str+=1;
--snip--

获取指向该字符串中另一个字符下一个位置的新指针?

【问题讨论】:

标签: c pointers dereference


【解决方案1】:

你不能增加一个数组,但是你可以增加一个指向数组元素的指针:

char str[100];
char *pointer = str; //points to the begin
pointer++; //points to the second element
*pointer = 'a'; //sets the second element

str 的类型为 char [100],在某些表达式中它衰减为(例如行为类似)指针,但它不是指针,您不能分配给 strstr = ...str+=1; 无效,您只能将某些内容分配给数组的元素,而不是数组本身。

因此你必须创建一个指向数组元素的指针,然后你可以递增指针。

【讨论】:

  • 和str+=1不一样
  • str 是一个指针
  • 添加了更多文字,更好吗?数组不是指针
  • 在书中它确实 str+1
  • str+1 会做什么?
猜你喜欢
  • 1970-01-01
  • 2012-01-21
  • 2014-03-03
  • 2016-09-25
  • 2013-06-27
  • 1970-01-01
  • 2011-03-02
  • 2011-02-24
  • 2011-02-13
相关资源
最近更新 更多