Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 乘以什么';它被指针指向_C_Pointers - Fatal编程技术网

C 乘以什么';它被指针指向

C 乘以什么';它被指针指向,c,pointers,C,Pointers,指针1指向5 指针2指向3 我想乘以5*3,但我只有指针。在C语言中我该怎么做 另外,当出现以下情况时,uint32\u t*指针意味着什么: 指针[2]={1,2}如果没有更多信息,我无法回答您问题的前半部分,但是uint32\u t*指针只是指向无符号32位整数值的指针(unsigned int和uint32\u t通常是等效类型,具体取决于您的编译器) 如果我看到一个声明只读取uint32\u t*指针,而没有更多信息,我将假设它是一个指向单个值的指针,并且在这样一个指针上使用索引操作符[

指针1
指向
5

指针2
指向
3

我想乘以5*3,但我只有指针。在C语言中我该怎么做

另外,当出现以下情况时,
uint32\u t*指针
意味着什么:


指针[2]={1,2}

如果没有更多信息,我无法回答您问题的前半部分,但是
uint32\u t*指针
只是指向无符号32位整数值的指针(
unsigned int
uint32\u t
通常是等效类型,具体取决于您的编译器)


如果我看到一个声明只读取
uint32\u t*指针
,而没有更多信息,我将假设它是一个指向单个值的指针,并且在这样一个指针上使用索引操作符
[n]
基本上会溢出单个元素大小的缓冲区。但是,如果为指针分配了数组或缓冲区函数的结果(例如,
malloc
calloc
,等等),则使用索引运算符是可以的,但是我更希望看到
uint32\u t pointer[]
用作声明,因为它更容易确定开发人员的意图。

uint32\u t*指针
只是一个带有垃圾值的指针,除非您将其指向某个对象

pointer[0] = 1;
pointer[1] = 2;
仅当您先前已将其指向至少大小为2的某个类型的数组
uint32\u t
,或指向包含使用
malloc
定义的
uint32\u t
的块时,才有效:

uint32\u t*指针

pointer = (uint32_t*)malloc(sizeof(int*SIZE); //SIZE > 2 here

uint32_t数组[10]

pointer = & array[0]; // also, pointer = array; would also work.
您的误解是指针不引用值,例如
5
3


指针指变量,例如
variableA
variableB
;这些变量的值可以通过指针访问和更改。但是指针只指向变量,而不是直接指向变量后面的值。

我不知道回答者对这个问题有什么难以理解的。这显然是关于取消指针的引用

这是显示指针指向的内容的方式:

#include <stdio.h>

int main(void)
{

        int num1 = 5;
        int num2 = 3;
        int* num1_ptr = &num1;
        int* num2_ptr - &num2;
        int sum = *num1_ptr * *num2_ptr;
        printf("%d\n", sum);
        return 0;

}
#包括
内部主(空)
{
int num1=5;
int num2=3;
int*num1_ptr=&num1;
整数*num2_ptr-&num2;
整数和=*num1\u ptr**num2\u ptr;
printf(“%d\n”,总和);
返回0;
}

*num1_ptr和*num2_ptr接受您的指针并引用该内存地址的内容。

我实际上并不理解您想要什么。另外,请不要在一个问题中问两个问题。(例如,“分段”是什么?你在“乘法”什么?你在记忆中试图指向什么?)你的问题非常模糊,需要更多的上下文信息。“创建缓冲区以增加numvers”对我来说没有意义。尼诺:对不起,下面回答了我的第二个问题,所以我将把它保留在问题中,这样将来的人就不会感到困惑了。以后我会尽量把它保留在一个帖子里。gerrytan和nneonneo:我已经更新了这个问题。请让我知道它是否更清晰。你是如何指向“否”中的位的?你想做两个“与”的运算吗?
uint32\u t指针[2]={1,2}<代码>指针
在这里不是指针,而是数组。在某些表达式中,数组被转换为指向它们的第一个元素的指针。谢谢你。我想知道:若指针是一个超过32个整数位的数组呢?uint32_t*指针怎么可能是指向32位以上整数值的指针?它是64位机器吗?你可以键入你的指针指向你想要的任何东西。例如,如果您将其键入char*,那么您将能够以8位为单位访问数字。“我想知道:如果指针是数组怎么办…”指针不是数组,所以您的问题没有意义。在我的情况下,我想知道如何防止
*a**b
被解释为
*a**b
sum
行证实了我的想象。
#include <stdio.h>

int main(void)
{

        int num1 = 5;
        int num2 = 3;
        int* num1_ptr = &num1;
        int* num2_ptr - &num2;
        int sum = *num1_ptr * *num2_ptr;
        printf("%d\n", sum);
        return 0;

}