有梦想大蜗牛 发表于 2020-7-14 00:28:27

c语言指针基础问题 求解


#include<stdio.h>
#include<string.h>
void main()
{
      int str=3;
          int *c;
      c=str;
        *c=*c+1;
      printf("%d %d\n",str,c);
      
}   
请问一下 *c=*c+1;这一行怎么理解 能拜托解释下原理吗?

肥你个橙c 发表于 2020-7-14 08:16:55

代码有点问题应该是笔者打错了,将变量str的地址赋值给指针变量c。下面的代码可能会帮到你。
#include<stdio.h>
#include<string.h>
void main()
{
      int str=3;
          int *c;
      c=&str;
      printf("%d\n",c);//变量str的地址
      *c=*c+1;//即对变量str进行自增操作
      printf("%d %d\n",str,c);
      printf("%d %d\n",str,*c);
      printf("%d %d\n",&str,*c);

}

405794672 发表于 2020-7-14 08:28:28

C中的值作为一个地址,去这个地址中找它存的东西。这个东西是一个值,它的值+1。指针就是地址。C是个指针变量,按理不能赋普通变量。如果能编译成功,那么,C的值就是3。*C就是取C的值的值。就是内存地址3号的位置,把3号位置中存放的值+1

4goodworld 发表于 2020-7-15 14:05:16

c=str;你确定这个编译的时候不提醒你两者类型不相同?
页: [1]
查看完整版本: c语言指针基础问题 求解