c语言 int *p=5 是啥意思。 是p的地址是5。还是*p的值为5

作者&投稿:酆榕 (若有异议请与网页底部的电邮联系)
C语言中*p=5 p=5有什么不同哦~

楼上两位讲的太复杂了,能问出这个问题的肯定是新手了,应该如下理解了:
int p=5;//表示整形变量p赋予值5;
int *p=5;//表示整形变量*p赋予值5;
在c语言和c++语言中,*有两种意思:
一、相乘的意思,如:j=x*p;
x=5,p=10
则j=5*10=50
二、代表指针的意思,指针就是指向一个地址的意思,那么*p=5则代表这个指针指向的地址为5,注意,这里这个5不要理解为单纯的数值,这里代表地是一个地址。
以上回答希望能帮到你
*******************************该死的分割线**************************
楼上回答的很详细。但是你有个概念错误了不要误导楼主(那么*p=5则代表这个指针指向的地址为5,注意,这里这个5不要理解为单纯的数值,这里代表地是一个地址。
)你的这句话错误。*P=5 ,是将*P的内存更改成5这个值 是而不是地址。
*******************************该死的分割线**************************
呵呵 我忽略了, 没表达清楚,以后多探讨了,楼主也是 多学多问别气馁。

是,指针 p 指向 n 的物理地址, *p 是该地址的内容, *p=m,就是将 该地址的内容修改等于m的内容,也就是 5 了。

你的问题问得很好,这是初学者常困扰的地方。
外形一样的东西,在声明里 和 在语句里 意思 可能不同,这是 C 语言奇葩 之一,常困扰初学者的地方。

int *p=5; 这是声明。声明里 *p 只是表示 声明 p 是指针。 *p=5 叫初始化。
但这样的初始化方法是错误的!指针 初始化 要给 地址,不能给值。

声明里,正确写法如下:
int a=4;
int *p=&a;
这样才对。int *p=&a; 声明 p 是指针,初始化 给 变量a 的地址。

语句里 可以写:
*p =5; 这是赋值语句,语句里 *p 表示指针指向的值,赋5。
语句里 可以写:
p = &b; 语句里 没星号的 p 表示指针指向的地址,赋 变量b 的地址。

所以要分清 是声明 还是 语句。

int *p=5——啥意思都不是。因为C/C++中就没有这样的语句,你见过?
如果是int *p=(int *)5,那是定义一个int *型指针并将常数5强制为int *型赋给指针p来初始化指针p。所以int *p=5是完全错误的语句。你可以用
void main(void){
int *p=5;
}
试试看编译器让不让通过编译……

如果这样的话表示的是p的值是5.
我们一般都这样赋值:
int *p = &5;把5的地址传给指针p
int *p; *p=5; 指针p指向5

*p表示p的地址

是一个指针


高淳县13797086758: c语言 int *p=5 是啥意思. 是p的地址是5.还是*p的值为5 -
陆翰氨苯: 你的问题问得很好,这是初学者常困扰的地方.外形一样的东西,在声明里 和 在语句里 意思 可能不同,这是 C 语言奇葩 之一,常困扰初学者的地方.int *p=5; 这是声明.声明里 *p 只是表示 声明 p 是指针. *p=5 叫初始化.但这样的初始化...

高淳县13797086758: c语言中这个声明是什么意思 -
陆翰氨苯: 你是想问加括号与不加括号的区别吧,加括号的int (*p)[5];意思是定义了数组指针,指针指向这个数组,相当于一个二维数组;而int *p[5];是定义了一个指针数组,这个数组的每一个元素都是一个指针,相当于int *p[5] ={ &a[0],&a[1],&a[2],&a[3],&a[4]};.

高淳县13797086758: c语言中(*p)[5]与*P[5]有什么区别?各代表什么意思 (*p)[5]中(*P)指中的内容还是p的地址啊 -
陆翰氨苯: int (*p)[5]; 是一个指针[注意 不是数组] 这个指针指向一个一维的大小为5个元素的数组 比如 int a[10][5]; 这里你就可以 p=&a[4]; p=&a[1]; 这个时候 *p表示的是一个 a[1] 你想表示 a[1][2] 可以是 (*p)[2] int *p[5] 是一个数组 数组中存储的元素是 一个指针 比如 int a,b,c; p[1]=&a;//&是取地址的意思 &a就是取a的地址 p[4]=&c;....

高淳县13797086758: c语言中,int **p;的含义是?简明回答,最好有解释,谢谢 -
陆翰氨苯: int **p 就是 int * (*p) 显然,*p是一个指针,编译器也得给它安排4字节的内存来存储它的值,int **p就是指向这块内存的指针,它的字面值就是这块内存的首地址

高淳县13797086758: C语言中*p=5 p=5有什么不同哦 -
陆翰氨苯: 楼上两位讲的太复杂了,能问出这个问题的肯定是新手了,应该如下理解了:int p=5;//表示整形变量p赋予值5;int *p=5;//表示整形变量*p赋予值5;在c语言和c++语言中,*有两种意思:一、相乘的意思,如:j=x*p;x=5,p=10 则j=5*10=50 二、代...

高淳县13797086758: C语言中int * p;的含义 -
陆翰氨苯: 在c语言中 * 是指针运算符. *p表示指针变量p所指向的变量的值.即p中存储的内存地址 所存储的变量的值. 另外 容易混淆的地方是; 定义一个指针变量p时,如 int *p; 表示定义了一个指向整型变量的指针变量p. 望采纳.

高淳县13797086758: C语言高手请指教:"int **p"是什么意思啊 -
陆翰氨苯: int a; int *p = &a; int **pp = &p; 明白了吧?p 是一个普通的指针,它指向普通变量 pp 是一个指向指针的指针.

高淳县13797086758: c语言指针*p里的p是地址吧? -
陆翰氨苯: int *p=5; 这样写语法上是错的.因为 这是“声明”加“初始化”,不是语句.int *p; 声明 p 是指针,可用于指向整型量.要用地址来初始化.例如:int a; int *p=&a; // 声明 p 是指针,可用于指向整型量,初始化,让它指向 a.语句里:*p = 5; 是正确的.把 5 赋给 *p, 也就是把数值 5 放入 a, 因为 p 现在 指向 a的地址.printf("%p %d",p,*p); 打印 p 的地址 和 它(指向)的值---- 注意,语句里 *p 表示值,p表示地址.声明里的*p 和语句里的 *p 外貌相同,意思不同.声明里 int *p=5; 错.语句里 *p = 5; 正确.

高淳县13797086758: C语言程序int*p,a[5];什么意思啊
陆翰氨苯: 定义一个指向整型的指针变量,a[5]表示整型的一维数组a中有5个元素.

高淳县13797086758: C语言中int *p; *p=5;为什么是不合法的? -
陆翰氨苯: 注意变量和数值的区别 int *p; p=(int *)malloc(sizeof(int));*p=5; 或者 int *p,a; p=&a;*p=5; p是一个指针,指向一个内存地址,你不指明p指向的位置,程序怎么会知道你要给哪块内存赋值呢?你可以申请一块堆空间给p,或者直接定义一个变量,让p指向该变量

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网