指针地址与变量地址的问题

int main(void){
//定义指针变量存储变量地址
int a= 10;
int* p:
p= &a;
printf(*%p\n", &a);
printf("%p\n", &p):
return 0;
}

运行结果如下图

img

问1:为什么两次输出地址结果一样,此题中,我觉得应该是(”%d“,p)等于(“%p”,&a) ,,但结果是他们地址也相等,这是为什么呢

我的思考:本例处于32位Windows环境。

  1. 指针p的数值是变量a的地址,但指针变量p自身也有一个紧跟在a地址后的地址。它们各占4字节。
    所以,指针的值,指针的地址,是两个东西。

  2. 我觉得应该是(”%d“,p)等于(“%p”,&a)

我用c++帮题主测试了一次,也是32位Vs平台,结果和题主猜测的一样,和题主的运行结果不同

img


所以我猜测应该以前的运行窗口没有关,应该关了运行窗口再看一次看看
题主如果觉得有用,往采纳

img

该回答引用GPTᴼᴾᴱᴺᴬᴵ
可以使用Matlab中的importdata函数将数据从txt文件中导入。以下是一个示例代码:

% 导入数据
data = importdata('data.txt');
% 显示导入的数据
disp(data);

% 持续监测文件的变化并重新导入
while true
    % 暂停1秒
    pause(1);
    % 检查文件的修改时间
    new_time = dir('data.txt').datenum;
    if new_time > old_time
        % 导入新的数据
        data = importdata('data.txt');
        % 显示导入的数据
        disp(data);
        % 更新修改时间
        old_time = new_time;
    end
end


这个代码导入data.txt文件中的数据,并且使用一个无限循环来持续检查文件的修改时间。如果文件被修改,它会重新导入数据并显示在命令行窗口中。请确保将old_time初始化为文件的初始修改时间。

冒号分号、第6行双引号,这无法运行吧。应该是笔误。
地址不一样的,一个是变量的地址,一个是指向变量的指针的地址