当前位置:首页 » 编程语言 » c语言a和p的区别
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言a和p的区别

发布时间: 2022-07-08 00:49:23

Ⅰ 在c语言中,int *p,a; *p=&a,和p=&a有什么区别

#include<stdio.h>
intmain()
{
int*p,a=0xAA;//声明int指针变量p和int变量a

// *p=&a; //把指针p指向的值改变为变量a的地址,是无效的
//因为a的地址长度为4字节,而指针p指向的值为int,即两字节的。
printf("程序运行前的值 ");
printf("p的地址=0x%X 指针p指向的值=0x%X 指针p自己的值=0x%X ",&p,*p,p);
printf("a的地址=0x%X a的值=0x%X ",&a,a);

*p=a; //指针p指向的值改变为a的值
printf(" 执行*p=a;指令后的值 ");
printf("p的地址=0x%X 指针p指向的值=0x%X 指针p自己的值=0x%X ",&p,*p,p);
printf("a的地址=0x%X a的值=0x%X ",&a,a);

p=&a; //把指针p自己的值改变为变量a的地址,同时指针p指向变量a的值了
printf(" 执行p=&a;指令后的值 ");
printf("p的地址=0x%X 指针p指向的值=0x%X 指针p自己的值=0x%X ",&p,*p,p);
printf("a的地址=0x%X a的值=0x%X ",&a,a);

return0;
}

Ⅱ C语言里,*(&a)==a,&(*p)==p的区别

a和p是变量,&a和*p是表达式,1和0x1000是常量
a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)
在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。
*p按照Stanley Lippman的着作《C++ Primer》中的描述,p是指针变量,*是解引用操作符,*p是一个表达式,含义是“对指针变量p进行解引用操作”,这与表达式&a的含义“取整形变量a的地址”是正好是相反的操作。

Ⅲ C语言 二维数组里a[i]和p[i]的区别

int a[3][3]相当于定义了int** a;当然就和int* p不一样了。
但是你可以强制转换(int**)p

Ⅳ C语言指针问题:在定义指针时*p=a和p=a有区别吗

当然有区别,区别很大,*p=a,就是给指针的表示的地址赋值,也就是赋值给指针指向的存储单元;而p=a,则表示给指针赋值,也就是指针的地址变成了a。两者一个指明了具体值大小,一个指明了具体位置。

Ⅳ c语言里 *p=a和p=a的区别

在c语言里 *p=a
是使用在声明指针变量的同时给它赋初值。p=a;是在已经声明了指针变量以后,再给它赋初值。这两者是有区别的,不能通用的。

Ⅵ c语言中*p=&a和p=&a有什么区别

c语言中*p=&a和p=&a只有一个区别就是指针初始化时间不同。

p=&a:P是1维指针;

*p=&a:P是2维指针;

p=&a示例:

inta;

int*p;

a=5;

p=&a;

printf("valueis:%d.",*p);

(6)c语言a和p的区别扩展阅读

*p=&a的使用

int a, b, c;

int **p;

a = 5;

b = 6;

c = 7;

p = (int **)malloc(EL_CNT * sizeof(int *));

*p = &a;

*(p + 1) = &b;

*(p + 2) = &c;

for(int i = 0; i < EL_CNT; i++)

printf("value is : %d ", **(p + i));

Ⅶ C语言:p->a,与*p->a有什么区别

->指针操作符的优先级非常高,于是*p->a就是*(p->a),取得指针p指向的结构体的成员a(也是指针)指向的第一个元素。p->a是取得p指向结构体的成员a,等价于(*p).a