1. c语言指针输出
第一个函数在调用的时候 把main()中的两个指向字符串的地址复制到形参里面,你交换了形参的两个地址,并没有对地址指向的元素交换。这样在子函数结束的时候,因为你只是把复制的两个地址交换了,而真正main()中的 p、q 是没有变的,所以跟没调子函数一样
而第二个是对地址指向的元素操作,不一样的
2. C语言 怎么用指针输出一个二维数组的全部值
C语言的数组(不管多少维)在内存中都是线性储存的。所以用一级指针加偏移就可以访问所有元素。
举个例子,有一个10*10的二维数组a,这样就可以输出:
inta[10][10];
int*p=(int*)a;
inti;
for(i=0;i<10*10;i++)
printf("%d",*(p+i));
3. C语言中变量指针输出问题
假设字符串"this is a book"的地址分布如下:
值 地址
t 0030F8B0
h 0030F8B1
i 0030F8B2
... ...
此时有char *ps="this is a book"; 由于ps是char类型指针变量,它的指针域只能保存地址,我们知道"this is a book"是一个字符串数组且拿到了首元素的地址就可以找到它整个字符串,所以ps的指针域保存了首字符的地址即t的地址0030F8B0,而格式输出符%s,就是输出字符串之意,即从t开始输出直至遇到\0符为止。
如果有printf("%c\n",*ps); 则取ps所指向的地址0030F8B0的值即字符t,换句说就是ps代表指针域即地址0030F8B0,再加上“*”就是取值的意思,合起来就是取地址0030F8B0的值即字符t.
4. c语言如何输出指针所指向的值
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
5. C语言指针输出数据问题
这就是规则,格式符%s的含义就是:把对应的值看做一个地址,按字节读取,然后输出读取到的值所对应的ASCII码,直到碰到0为止
p1是个地址,假设p1的值是1000(也就是数组a的起始地址),那么从1000开始依次读取到HIKARI\0 然后输出
如果是*p1 那么*p1是'H','H'的ASCII值是72, 那么printf("%s",*p1); 就是从地址72开始读取,也就是printf("%s",72); 而地址72是不允许用户程序操作的,会出错。
再举个例子:
int a = 4407873;
printf("%s", &a);
会输出ABC 因为变量a内存空间的值按字节看就是'A','B','C','\0'
6. 为什么c语言用指针输出字符串不用加*号
为什么c语言用指针输出字符串不用加*号?因为char*STR定义了一个char*字符指针STR,而STR指向了ILOVECHINA中的第一个字符I。
在cout流中有一个复制循环,它是一个具有数百个输出STR点的字符串,在这个字符串中,STR被赋值给临时指针,以便一个接一个地输出。
然后*STR是一个字符,也就是I*是一个derecration,也就是STR指向的那个字符,所以*STR就是I这个不能被赋值或移位所以它不能被打印出来。
(6)c语言用指针做输出扩展阅读:
关于字符串指针
1.字符数组中存储一个度字符串
Char字符串[]="LinuxC";
Printf("%s\n",字符串);
字符串是一个字符数组的名称,它也是应答字符数组的第一个地址。
2.使用字符串指针指向一个字符串
如果你不想定义一个字符数组,你可以用一个指针指向一个字符串,称为“字符串指针”,例如:
Char*p="LinuxC";
Printf(“%s\n”,p);
“LinuxC”是一个字符串常量。字符串常量的C语言:在内存中打开一个字符数组来存储字符串常量,并将打开的字符数组的第一个地址保存到p。