c语言中指针变量为什么不能给int变量赋值

如题所述

指针变量 里面是地址, int 变量里面是整数。
整数和地址是2个不同的东西。
地址是一种标识,而这种标识和整数没有关系。
赋值一般发生在同一类型的变量之间,或者可以强制转换的变量类型之间。地址不能强制转换到整型。
不能因为地址看起来像数字就认为它是整型。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-09
c语言是强制类型的语言~必须这样
第2个回答  2018-04-18
。。你居然纠结这个问题,我纠结的是比如一个指针 int *p;,不能给它修改指针p。。比如 p=0x0001;然后再用一个变量读出*p内存的数据 。这种读取操作就好像寄存器寻址 mov ax 0x0001,然后mov bx [ax]; 。。然而高级语言为何有限制 。

c语言char和int可以互相赋值,但指针不能赋值,char *和int *不能直接...
char 和 int 是通过ASCLL码相互赋值的 例如 a 以 %d 输出 则为97 以%c输出则为'a' char指针和int指针 之所以不能相互赋值是因为他们的长度不同 Tc 下 char 只有一个字节8个二进制位 而int 则是两个字节16个二进制位 由于指针所指向的是变量的起始地址 那么在当指针指向一段...

C语言里:为什么不能将int型变量直接赋值给指向int型变量的指针
因为指针里实际保存的是地址 比如 int a = 0;int *p ;p = &a; \/\/这是指向int型变量的指针,它保存的a这个变量所在的地址,比如,a保存在内存地址为0x00010011,那么p保存的就是0x00010011 所以不能直接把int型变量赋值给指针

C语言里:为什么不能将int型变量直接赋值给指向int型变量的指针
能,一定能。但你int *p;*p=7;这样不行。为什么呢?因为“能直接给指针指向的数据”赋值,而你这里的p还没有指向,所以不能赋值;这种指针有个名字叫“悬浮指针”,俗称野指针,是不能给它赋值的。

C语言里:为什么不能将int型变量直接赋值给指向int型变量的指针
如果是这样的话: char* pch = (char *)&long-int-var 即可. 如果是地址赋给char型变量的话,是不可能的,因为char一般只有一个字节,而地址一般有4个字节。 希望能够帮助到你,如果还有什么疑问,请留言。char型变量左移8位赋值给int型变量的问题 要先转int再左移 比如 char c=0x12...

c语言中定义变量,为什么不赋初值啊?
在 C 语言中,定义变量时是否给变量赋初值取决于程序员的需求和设计决策。C 语言是一种低级语言,它允许灵活地操作内存,包括不显式地初始化变量。这样的设计允许程序员更好地控制程序的行为和性能。有几个原因可能导致在定义变量时不赋初值:1. **性能考虑:** 在一些情况下,显式初始化变量可能...

...这句到底对不对?初始化时能这样,为什么赋值时就不能?求讲解_百度知 ...
int *p=&a;这句话是对的,他的意义是声明整形指针p,并且将p初始化。等同于:int *p; p = &a;这两步操作,而赋值等同于初始化,也就需要p = &a;

C语言 指针变量
1)先看变量q的定义:int *q ;q是一个指针(地址),在指针(地址)所指向的位置存放了一个整型值 2)再看答A:q = n;这个赋值表达式表示,将变量q赋值为变量n,而n的定义为 int n 初值为2 3)答案A错误的原因:按照1)中的定义,q的值只能是地址,而q=n却将整型变量值直接赋给地址。

c语言指针赋值德问题
由于参数的临时性,去直接修改参数变量的值,无法实现将修改后的值返回给调用者,只能利用指针型变量的特点来实现:将它指向的变量(这个被指向的变量可以是调用者的变量)的值进行修改,相当于我们改变的是门牌号中的住户而非去修改门牌号。另外:*max=x; 是将x的值取出赋值给max指向的变量,这个指向的...

我这C语言代码自学关于指针问题,运行出现这样的问题11 invalid conversi...
指针与变量不能直接赋值,只有(*q)才能和变量进行赋值,并且必须先给指针分配内存空间,所以直接把q=i编程(*q)=i是不行的。有两种该法:include<stdio.h> include"stdlib.h"int main(){ int i,j,k;int *q;q=(int*)malloc(sizeof(int));scanf("%d %d %d",&i,&j,&k);if(i>j)...

C语言 选择 求教 关于指针
对于(2)我们需要知道非地址值是不能赋值给一个指针变量的,其实也就是不同类型的变量不兼容而已,因为C语言是强制类型语言。那么int a, *p, *q; q = &a; p = *q;就是错误的,因为p是指针类型变量,而*q是int类型值。int a = 20, *p; *p = a; 是正确的。对于(3)我们需要知道...

相似回答