我有一个函数,它作为输入,指向2D数组的指针和指向1D数组的指针.
int resize(double *x, double **y, int n){
Run Code Online (Sandbox Code Playgroud)
此函数的目的是将x和y的大小调整为其长度(n)的两倍.
我创建了两个新的阵列 - 长度增加了一倍
double **yTemp = NULL;
double *xTemp = NULL;
xTemp = new double[2*n + 1];
yTemp = new double*[2*n + 1];
Run Code Online (Sandbox Code Playgroud)
然后我遍历并用x和y替换xTemp和yTemp的值
然后将它们设置为等于另一个:
y = yTemp;
x = xTemp;
return 2*n;
Run Code Online (Sandbox Code Playgroud)
并退出该函数,y和x似乎失去了额外的长度.
任何有关这方面的帮助都会很棒!
如果我们宣布:
int i;
int *ptr1 = &i;
*ptr1=10;
cout << ptr1;
Run Code Online (Sandbox Code Playgroud)
这里ptr1将给出地址.但:
char *ptr2;
ptr2="Priyesh";
cout << ptr2;
Run Code Online (Sandbox Code Playgroud)
这里它将给出字符指针的内容.为什么会有这样的差异?
我正在尝试编写这个程序:
编写一个函数digit(n, k)
,返回n(一个正整数)中的第 k 个数字(从右边开始)。例如
digit(829, 1)
返回 9digit(829, 2)
返回 2digit(829, 3)
返回 8如果 k 大于 n 中的位数,则让函数返回 0。
我收到一条警告消息:
从返回类型为 int 的函数中返回 (int*)(int,int) 从指针生成整数而不进行强制转换
int digit(int a,int b);
int main (void){
int i, c;
printf("Enter the number");
printf("Enter the digit you want to check");
scanf("%d",&i);
scanf("%d",&c);
puts("\n");
printf("%d", digit(i,c));
}
int digit (int a, int b){
while(b>0)
{
int digit = a%10;
a/=10;
b--;
}
return digit;
}
Run Code Online (Sandbox Code Playgroud)
这有什么违法的?
假设我用C/C++编写程序并创建一个特定大小的数组.即使我关闭计算机并稍后访问它,我也希望永久保留它.有没有办法做到这一点?如果是这样,请告诉我,并在保存之后,如何访问它.