C 指针和临时变量

标签 c memory pointers temp

int main()  
{  
    int i=0;  
    int* p_numbers = ((int*) malloc (5*sizeof(int)));  
    int* temp;  
    temp = p_numbers;  
    for(i=0;i<5;i++)  
    {  
        *temp=i;   
        printf("temp %d p_numbers %d",*temp,*p_numbers);  
        temp++;           
    }
}

请告知分配给 temp 的指针,即 temp=p_numbers

temp 是否指向 p_numbers 指向的同一内存位置?

最佳答案

变量 tempp_numbers 将在循环的第一次迭代中指向相同的内存位置。之后,temp 递增一个整数,但 p_numbers 不会。

因为赋值,p_numbers = [0,1,2,3,4],所以你会打印出:

temp 0 p_numbers 0
temp 1 p_numbers 0
temp 2 p_numbers 0
temp 3 p_numbers 0
temp 4 p_numbers 0

将指针视为指向内存地址,而不是更像 Java 引用语法。

关于C 指针和临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628574/

相关文章:

c# - 返回值内存范围

c - c语言如何让用户输入一个数学函数?

C 字符超过 128

c - 在C中将内存初始化为零是什么意思?

c++ - 在托管包装器中包装非托管 C++

c - 在 C 中,当返回指针时,赋值使指针来自整数而不进行强制转换

c++ - 使一维指针数组指向二维 vector 中的对象

C 程序中的核心转储

Clang:在哪里定义了 -Wall 选项?

C 中的 union 解引用和递减