如果我想迭代一个字符串,在这种情况下'test',我可以像这样使用指针算法来获取下一个字符:
char *c = "test";
*c++;
putchar(*c);
Run Code Online (Sandbox Code Playgroud)
这将打印第二个字母'e'.
但是,如果我想去第三个角色,为什么我不能说:
char *c = "test";
c = *c + 2; //*c = *c + 2; also doesn't work
putchar(*c); //Exception thrown: write access violation.
Run Code Online (Sandbox Code Playgroud)
?
据我所知,使用指针算法获取第三个字符的唯一方法是像这样强制转换它:
char *c = "test";
c = (char *) c + 2;
putchar(*c);
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么会这样吗?
这个快速排序代码出了什么问题我输出错误输出:
#include<stdio.h>
void quick_sort(int A[], int start, int end) {
int pIndex;
if (start < end) {
pIndex=partion(A,start,end);
quick_sort(A,start,pIndex-1);
quick_sort(A,pIndex+1,end);
}
}
int partion(int A[], int start, int end) {
int i, temp, pIndex = start;
int pivot = A[end];
for (i = start; i < end; i++) {
if (A[i] <= pivot) {
temp = A[i];
A[i] = A[pIndex];
A[pIndex] = A[i];
pIndex++;
}
}
temp = A[pIndex];
A[pIndex] = A[end];
A[end] = temp;
return pIndex;
}
int main() …Run Code Online (Sandbox Code Playgroud) 我想将给定的 n 个值(n 已知)存储在一个数组中,但我不知道该怎么做,所以我查看并找到了这篇文章:C, read multiple numbers from single input line (scanf?),还有这个回答:
int main()
{
int i, size, *v;
scanf("%d", &size);
v = malloc(size * sizeof(int));
for (i=0; i<size; i++)
scanf("%d", &v[i]);
printf("%d %d %d", v[0], v[1], v[2]);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么 scanf 可以这样做,函数不应该在循环的每次迭代中要求另一个输入吗?只要它们以空格分隔,它如何读取一个int,然后读取另一个等等?scanf 怎么会这样呢?因为好像不应该。
PS:为了简单起见,我只用 3 个值编写了最终的打印语句,在“我的情况”中,大小为 3。
先感谢您!
我有这两个变量C:
double predict_label = 6.0;
double prob_estimates = 8.0;
Run Code Online (Sandbox Code Playgroud)
如何将这两个变量转换C为char并打印出一个字符串,其中包含"预测标签的值为6,概率估计值为8"的字符串.