c - 增加枚举 char[ ] 的指针

标签 c arrays pointers

这会产生不正确的输出。

谁能告诉我我做错了什么。显示前 1,2 或 3 个字符(取决于字符),但其余字符是随机的。

注意:这只是一个学习练习,我知道有更简单的方法可以做到这一点。

int main(int argc, char *argv[])
{
  //Assume 1 arg only
  int len = strlen(argv[1]);
  char *d = malloc (strlen(argv[1])+1);
  strcpy(d,argv[1]);

  char *x;
  x = &d[0];

  int j,k;
  j = sizeof(char*);
  for (k=0;k<len;k++){
    printf("Value: %c\n\n", (*x + (k*j)));
}

最佳答案

您应该使用等于1sizeof(char);试试这个:

j = sizeof(char);
for (k = 0; k < len; k++ ) {
    printf("Value: %c\n\n", *(x + k * j)); // j equals to 1
}

注意:*(a + b)等于a[b]b[a]

关于c - 增加枚举 char[ ] 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19064868/

相关文章:

c - 错误 : typedef redefinition with different types ('unsigned short' vs '__darwin_size_t' (aka 'unsigned long' ))

c++ - 在 C++ 中,在销毁指向类的指针后,我可以使用新函数重新利用指针吗

c - 函数调用后指针值丢失 - C

c - c89 标准要求实现提供哪些硬件特定定义?

c - 我在哪里可以找到 IJG libjpeg 的好教程

c - 试图对一个函数进行逆向工程

java - 如何使用jackcess将数据从数组传递到数据库

c - 将数据存储在数组中

c# - 为什么 File.WriteAllBytes 不适用于 .db 文件但适用于 .csv 文件?

c - struct node *head 和 struct node ** head 有什么区别?