c 带字符串的指针

标签 c string pointers

为了更好地学习指针,我编写了这段代码。目的是在 for 循环中一次打印字符串的一个字符。再次尝试学习如何递增指针然后取消引用指针。

char *string = "abcdef";
char *pointer = &string; 

for (int i =0; i < 4; i++)

{   
    printf("the next charater is %c\n", *pointer);
    pointer = (char *)pointer + sizeof(char);
}

想要它打印:

下一个字符是a

下一个字符是b

下一个字符是c

下一个字符是d

最佳答案

char *pointer = &string; 

应该是

char *pointer = string; 

string 是一个指针变量,其中包含字符串文字的地址。您需要字符串文字的地址,因此您应该简单地复制 string 中的值 - 而不是获取局部指针变量的地址 - 您当前的代码为您提供了一个指向字符串指针的指针。

此外,pointer = (char *)pointer + sizeof(char); 不需要强制转换,也不应使用 sizeof(char)。当递增类型为 pointer to X 的变量时,将其递增 1 会将其递增 sizeof(X) 字节 - 递增 1 以指向下一个 X 。使用 pointer += 1;++pointer 代替。

关于c 带字符串的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608618/

相关文章:

c++ - 函数指针在 C++ 中返回另一个具有局部性的函数指针

C编程: Segmentation fault (core dumped)

c - 如何在C中重新排序n维矩阵的维度? (类似于排列(A,[2 :n 1]) in Matlab )

c - 我想知道为什么第36行会导致断言失败

php - 从iOS到PHP的特殊字符和表情符号

c - C中结构中的字符串数组

javascript - str.replace(/[^0-9]/g, "") 删除我的整个字符串,而不是仅仅删除非数字字符。如何使其正常工作?

c - 如何在函数中打印 void * 以及如何在函数中访问 void * 变量?

c++ - C++ Small vs All Caps数据类型

python - 创建 'generic' 类继承外部模块类的最佳方法