📜  C指针测试1

📅  最后修改于: 2020-10-23 05:34:06             🧑  作者: Mango

C指针测试1

1)在结构中,如果变量用作指针,则从下面给出的运算符符中,使用哪个运算符使用变量指针访问结构的数据?

  1. ->

正确的选项是(b)。

说明:

对于结构,Arrow(->)用于使用指针变量访问数据,而Dot(。)运算符可用于使用常规结构变量访问数据。

2)对于数组元素a [i] [j] [k] [2],确定等效指针表达式。

  1. *(*(*(*(*(a + i)+ j)+ k)+2)
  2. *((((a + m)+ n + o + p)
  3. ((((((a + m)+ n)+ o)+ p)
  4. *(((((a + m)+ n)+ o + p)

正确的选项是(a)。

说明:

对于数组元素a [i] [j],指针表达式为*(*(a + i)+ j)

对于数组元素a [i] [j] [k],指针表达式为*(*(*(*(a + i)+ j)+ k)

对于数组元素a [i] [j] [k] [2],指针表达式为*(*(*(*(*(a + i)+ j)+ k)+2)

3)表达式++ * ptr和* ptr ++是否相同?

正确的选项是(b)。

说明:

++ * ptr递增ptr指向的值,而* ptr ++递增指针而不是值。

4)选择正确的语句,这是这两个语句的组合,

Statement 1: p= (char*) malloc(100);
Statement 2: char *p;
  1. char * p =(char *)malloc(100);
  2. char * p =(字符)malloc(100);
  3. char p = * malloc(100);
  4. 以上都不是

正确的选项是(a)。

说明:

下面的代码是malloc()函数的原型,此处ptr指示指针。

  1. ptr =(数据类型*)malloc(size);

在下面的代码中,“ * p”是数据类型char的指针,而malloc()函数用于为char分配内存。

  1.    
  2. char * p =( char *)malloc(100);

5)对于下面提到的C语句,您有何评论?

signed int *p=(int*)malloc(sizeof(unsigned int));
  1. 会抛出运行时错误
  2. 类型转换不当
  3. 将分配内存,但不能在内存中保存int值
  4. 声明没问题

正确的选项是(d)。

说明:

int和无符号数据类型的大小相同,因此在C语句中没有问题:

有符号的int * p =(int *)malloc(sizeof(unsigned int));