C语言指针题,C语言基本指针多项选择题?

发布于 科技 2024-06-09
13个回答
  1. 匿名用户2024-01-29

    这个问题本身有问题。

    结果没有初始化,没有指向任何空格就传递给add函数,这本身就是错误的,当然也可以实现,在add函数中申请一个地址来存储结果,并将地址发回给结果,但是该地址的**是无法控制的, 容易造成内存泄漏。

    void add(int *a,int *b,int** r)int *p=(int *)malloc(sizeof(int));

    p=*a+*b;

    r=p;

  2. 匿名用户2024-01-28

    是的,有问题,现在的考试真的很困难。

    void main()

    int a = 9,b = 6;

    int c;*不定义这个,程序也可以运行,但存在导致系统异常或崩溃的隐患*

    int *result = &c;*这更好,不会导致内存泄漏*

    add(&a, &b, &result);

    printf("%d + d = %d",a,b,*result);

    void add(int *a,int *b,int** r)*r = *a+*b;

  3. 匿名用户2024-01-27

    不管内存泄漏如何,呵呵:

    c:void add(int *x, int *y, int **s)

    s = (int*)malloc( sizeof(int) )s = *x + y;

    c++:void add(int *x, int *y, int **s)

    s = new int(*x + y);

    不会导致内存泄漏的版本:

    void add(int *x, int *y, int **s)static int n = 0;

    n = *x + y;

    s = &n;

  4. 匿名用户2024-01-26

    选择 b*(p+5) 即 p[5],由于 p 指针指向数组 s 的第一个地址,因此 p[5] 实际上是 p[5],即字符串终止符'\0'

  5. 匿名用户2024-01-25

    答案是b。

    p+5) 返回一个数值,可以直接排除 C

  6. 匿名用户2024-01-24

    总结。 1. 变量的指针表示变量得到 b。

    a) 值 b) 地址 c) 名称 d) 标志 2,已定义 int k=2;int *ptr1,*ptr2;而 ptr1 和 ptr2 都指向了变量 k,下面无法正确执行的赋值语句是 b。

    a)k=*ptr1+*ptr2 b)ptr2=k c)ptr1=ptr2 d)k=*ptr1*(*ptr2) 3.如果指定:int *p,m=5,n;以下段正好是 d。

    c语言问题(指针)。

    亲爱的,我正在研究这个问题的答案,请耐心等待。

    好。 感觉有点难做。

    请说。 1. 变量的指针表示变量得到 b。 a) 值 b) 地址 c) 名称 d) 标志 2,已定义 int k=2;int *ptr1,*ptr2;而 ptr1 和 ptr2 都指向了变量 k,下面无法正确执行的赋值语句是 b。

    a)k=*ptr1+*ptr2 b)ptr2=k c)ptr1=ptr2 d)k=*ptr1*(*ptr2) 3.如果指定:int *p,m=5,n;以下段正好是 d。

  7. 匿名用户2024-01-23

    为此问题选择 B。 *(a+i)) 不是对数组元素的正确引用。

  8. 匿名用户2024-01-22

    d 是错误的。

    在 a 中,p-a 是指针的运算。 这里 *p=a,所以 p(地址)的值与 a(地址)的值相同,p-a 为 0

    在 b 中,a[j] 是 a 中的数据,& 是地址,加上 a * 是值,所以 *(&a[j]) 等价于 a[j]。

  9. 匿名用户2024-01-21

    项目 b,*(a[i]),实际上等同于 a[i]。 取地址字符,&a[i] 表示 a[i] 的地址。 “*address”表示取存储在该地址位置的值,因此在 *(a[i]) 中,* 和 & 被抵消,这相当于 a[i]。

    当然,答案是d。

  10. 匿名用户2024-01-20

    const int *p,其中 p 是指向 const 对象的指针。

    int * const p,指针是 const,而不是它指向的对象是 const。

    指向 const 对象的指针(指向 const 对象的指针 - C++ 入门)。

    怎么写? const double *cptr;

    CONST 定义 cptr 指向的对象类型,而不是 cptr 本身。 换言之,CPTR 本身不是 CONST,它允许重新分配 CPTR。 它所指向的对象的值(可以是非常量的)不能通过取消引用 cptr 来修改。

    1)如果指针指向一个const对象,则不允许更改它所引用的const的值。

    2) 将 const 对象的地址分配给指向普通非常量对象的指针也会导致编译时错误。

    3) 不能使用 void* 指针来保存 const 对象的地址,但必须使用 const void* 类型的指针来保存 st 对象的地址。

    4)允许将非常量对象的地址分配给指向常量对象的指针,无法通过指针修改其值的行为会导致编译错误。但是,可以通过其名称修改原始变量的值。 不能保证指向常量点的指针指向的对象的值不可修改。

    因此,“如果 cptr 是指向 const 对象的指针,则 *cptr 在程序持续时间内保持不变”的说法是错误的。

  11. 匿名用户2024-01-19

    前者是指向常量的指针变量。

  12. 匿名用户2024-01-18

    指向“常量”的指针变量可以通过其他方式完成,而无需更改它所引用的变量的值。

  13. 匿名用户2024-01-17

    简单来说,要看p是什么,从右到左,首先看到的就是*,所以p是指针,那么p是什么样的指针呢? 再往左看,看到 int,所以 p 是指向形状的指针。 再往左,你会看到 const,这意味着这个 p 指向的形状是只读的,所以最终结果是:

    p 是指向只读整形常量的指针。 这意味着 p 的点可以修改,但它指向的点的内存值不能修改。

    如果是这种情况:const int * const p,因为 p 是直接被 const 修饰的,所以 p 的点不能修改,因为 int 也是 const,所以 p 指向的整形对象不能修饰。

相关回答
18个回答2024-06-09

#include

int main() >>>More

14个回答2024-06-09

这其实是可以理解的。

只需将 %s、%c、%p 放在一起即可。 >>>More

22个回答2024-06-09

数组和指针之间的区别:

数组名称确实表示指向数组第一个地址的指针,但是这个指针很特殊,它的值(指针的值是指针指向的地址)不能被覆盖,只能覆盖它指向的内容,换句话说,数组名称只能指向数组的第一个地址, 如果有数组 char a;那么如果 a = a+1; 这是一个甚至无法编译的错误。 对于普通指针,例如,可能有一个数组 char a; 然后定义一个字符 *p = a; 然后使用 p = p+1 是有效的,这意味着指针 p 指向 &a[1]。 >>>More

27个回答2024-06-09

for (int i=0;i<4;i++)x*=*(p+1);

等效。 for (int i=0;i<4;i++)x=x*a[i]; >>>More

18个回答2024-06-09

………童鞋:你搞砸了你的指针。

首先,填充功能确实设置了您分配给它的所有空间'\0',但指针 p 不再指向您分配的空间,而是指向内存中“堆”的顶部; 然后,func 2 再次将其向上移动,按 num 位和字节移动它,此时它指向 **? 反正不是你想要的地方。 将它指向的内存设置为'\0',则 strlen 应该得到 0,后面跟着 blank 将没有任何输出。 >>>More