小编Har*_*ish的帖子

没有sizeof运算符的数组大小

我想了解下面的程序,但我不清楚.

    #include<stdio.h>
    int main()
    {
        int a[]={1,2,3,4,5,6,9};
        printf("sizeof array is %d\n",sizeof(a));
        printf("size of array using logic is %d\n",((&a)[1]-a));
        printf("value of (&a)[1] is %p \n",(&a)[1]);
        printf("value of a is %p \n",a);
        printf("address of a[0] is %p\n",&a[0]);
        printf("address of a[1] is %p\n",&a[1]);
        printf("address of a[2] is %p\n",&a[2]);
        printf("address of a[3] is %p\n",&a[3]);
        printf("address of a[4] is %p\n",&a[4]);
        printf("address of a[5] is %p\n",&a[5]);
        printf("address of a[6] is %p\n",&a[6]);
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码输出是:

    sizeof array is 28
    size of array using logic is 7
    value of …
Run Code Online (Sandbox Code Playgroud)

c arrays

22
推荐指数
3
解决办法
2164
查看次数

如何在 C 程序中查找 M 是否实际上是 2power(2n) + 1 的输出

我在项目中有一个棘手的要求,要求编写函数,如果给定一个可表示为2 2n +1的整数,该函数将返回值 1(否则为 0)。其中n是任何非负整数。

int find_pow_2n_1(int M);
Run Code Online (Sandbox Code Playgroud)

例如:返回 1,当 M=5 时,因为当 n=1 -> 2 1*2 +1时输出 5 。

我正在尝试评估方程,但它导致日志函数,在 google 浏览时也无法找到任何类型的提示。

c embedded

0
推荐指数
1
解决办法
124
查看次数

在使用按引用调用时,main中动态分配的char指针不返回字符串

我试图通过引用调用将char指针的地址传递给函数.当我尝试检查主要和功能中的char指针的地址时,它们都不同,为什么?更令人惊讶的是,我无法理解的是,当使用引用调用时,函数中更新的字符串实际上也应该反映在main中.

void fun(char *str){
    str = "hello";
    printf(" str address in fun is = %p\n",str);
    printf("In fun str is = %s\n",str);
}
int main(){
    char *str = (char*) malloc(sizeof(10));
    fun(str);
    printf(" str address is = %p\n",str);
    printf("In main str is = %s\n",str);
}
Run Code Online (Sandbox Code Playgroud)

该方案的产出如下:

str address in fun is = 0x804859b
In fun str is = hello
str address is = 0x839e008
In main str is = 
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么会这样.任何人都可以解释这段代码中究竟发生了什么.为什么我无法从函数中获取main更新的字符串.[注意:当我使用int指针尝试相同的代码时,这很好用.我试图理解char指针场景中的堆内存角色.

c

-1
推荐指数
1
解决办法
142
查看次数

标签 统计

c ×3

arrays ×1

embedded ×1