我是C语言的初学者,正在尝试实现一个返回值的函数,同时通过指针改变数组的副作用。我知道我应该在最后释放所有的内存,但这不是这里的主题。
我的编译器说设备上没有剩余的空间,并发出信号"collect2: error: ld returned 1 exit status“。这是与指针有关,还是我在函数本身中犯了错误?
int load(int *a) {
int i,n;
printf("Input the number of elements ");
scanf("%d", &n);
a=malloc(n*sizeo
当我做以下事情时:
1. int y = 5;
2. int &a = y;
3. cout << &a << endl; // the address of a is the same address of y
4. cout << a << endl; // this has the value of y, which is 5.
为什么a的地址与y相同?我知道,改变a也会改变y。
但是你怎么读第2行呢?您是否将其读取为的地址a包含y的值?
这是否意味着a和y共享相同的物理内存位置?还是有两个不同的内存位置具有相
我是个小菜鸟,指针还会给我带来麻烦。我想改变int的值,它是从函数中的参数(作为指针)得到的。
#include <stdio.h>
bool function(int* a){
a++;
printf("%d",*a); //getting some big number, maybe address. If i did not use a++; I get just normal a, unchanged.
return false;
}
我正在SUSE Linux上运行我的代码。我在一个函数中有一个指针,使之为空。但是,当我试图在with循环中比较相同的指针和NULL时,问题就出现了。这会导致节目崩溃。我已经在下面的示例代码中重现了我的问题。有人能告诉我这里发生了什么吗?
我的代码如下:
#include <stdio.h>
int func(char *,int);
int main()
{
char buffer[20];
int i =20;
int temp = func(buffer,i);
if ( (temp == 0) && (buffer !
我有一个名为char clientes_dni[]的全局变量。我正在(从主)调用一个类似于:comprobarExistenciaDNI(clientes_dni)的函数。我的函数comprobarExistenciaDNI是:
bool comprobarExistenciaDNI(char DNI[]) {
/// Change to lower DNI last word
DNI[8] = tolower(DNI[8]);
return (true);
}
如果我的var的值为‘1111111J’,则函数后面的值为‘111111j’。我不处理全局变量,只处理局部变
我知道数组声明会导致内存块被保留,但使用指针表示的数组则不会。因为它包含数组的第一个元素的地址。
但考虑到大小如何从指向单个长整型更改为动态声明的长整数数组,对此主题的任何解释都将非常受欢迎。
亲切的问候
示例:
long int *plint = 5; // size is the same as
long int *arr;
arr = (long int*)malloc(5*(sizeof(long int));
大小arr和大小plint相同吗?
如果不是,它是如何改变大小的?
好的,所以我第一次阅读C++初级,第五版,和我第一次学习关于警察的知识。它一开始就说:
重要的是要理解,当我们在constexpr声明中定义指针时,constexpr说明符应用于指针,而不是指针所指向的类型:
const int *p = nullptr; // p is a pointer to a const
*q = nullptr; // q is a const pointer to int
好吧所以我想..。它是一个指向const的指针,这意味着p(指针)它-self不是一个常数,所以我可以改变它。所以,当然,我在我的IDE上试了一下:
#include <ios
我现在正在学习指针,而'&‘操作符在数据类型方面给我的大脑带来了混乱,尤其是当它与数组一起使用时。
我看到'&‘操作符给了我第一个内存地址,不管它和什么一起使用。
但是我不明白为什么当我将数据类型与数组的名称一起使用时,它会改变数据类型。就这样吗?或者有什么原因我还不知道?
所以我的问题是
为什么array1和数组2的数据类型是不同的,即使它们只是数组的名称?为什么仅仅因为我添加了‘&’就改变了数据类型?
int array1[5];
int *p1 = array1; //why does this works
int *p2 = &a
#include<stdio.h>
int main()
int a=300;
int *p=&a;
int **q=&p;
**q=-5000;
*p=-200;strong text
printf("%d",a); //&a
printf("%d",p); //&p, *p
printf("%d",q); //&q, *q, **q
return 0;
}
在这里,对变量的引用是重写值还是地址?如果是的话,那为什么
可能重复:
我知道如何使用指针进行交换,但是,如果我尝试这样一种不同的方法:
/* Pointers */
#include <stdio.h>
int main ()
{
int a=4,b=6;
swap(&a,&b);
printf("A is %d, and B is %d\n",a,b);
return 0;
}
int swap(int *a, int *b)
{
int *temp;
temp = a;
a = b;
b = temp;
return 0;
}
它不起作用。交换函数基本上是
我试图用一个函数改变某个变量的地址,但是我不知道怎么做.然而,这是我要做的:
void address (int* x, int* y)
{
x = y;
}
int main(void)
{
int x = 2;
int y = 4;
address(&x, &y);
printf("%d", x);
return 0;
}