小编Ngo*_*han的帖子

C语言数组中未初始化元素的值

我有一个包含3个元素的数组.但我只想初始化其中的两个.我让第三个元素空白.

unsigned char array[3] = {1,2,};
int main(){
  printf("%d",array[2]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印结果是0.我在IAR上测试了它,还有一些在线编译器.

第三个元素的值是否有任何C规则?是否有任何编译器通过0xFF填充第三个元素?(特别是交叉编译器)

c arrays initialization

10
推荐指数
1
解决办法
6824
查看次数

指向C++中的函数指针

我写了一些代码来了解函数指针是如何工作的.我在一些IDE上运行以下C++代码,结果是一样的.

#include "stdafx.h"

int *function(){
    static int a=1;
    return &a;
}
typedef struct{
    int *(*pt_1)();
    int *(*pt_2)();
}x_t;
int _tmain(int argc, _TCHAR* argv[])
{
    x_t s;
    s.pt_1 = function;
    s.pt_2 = &function;

    printf("%x\n",s.pt_1);    //Result: 0x013011a9
    printf("%x\n",*s.pt_1);   //Result: 0x013011a9 
    printf("%x\n",**s.pt_1);  //Result: 0x013011a9
    printf("%x\n",s.pt_1());  //Result: 0x01307000
    printf("%x\n",*s.pt_1()); //Result: 1

    printf("%x\n",s.pt_2);    //Result: 0x013011a9
    printf("%x\n",*s.pt_2);   //Result: 0x013011a9
    printf("%x\n",**s.pt_2);  //Result: 0x013011a9
    printf("%x\n",s.pt_2());  //Result: 0x01307000
    printf("%x\n",*s.pt_2()); //Result: 1

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

    1. 为什么s.pt_1 == s.pt_2 == *s.pt_1 = **s.pt_1
    1. 地址s.pt_1()指向何处?它在内存中的位置?

c++ memory function-pointers

7
推荐指数
1
解决办法
144
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

function-pointers ×1

initialization ×1

memory ×1