打印一个C数组会显示不连续的地址的原因是,数组在内存中是连续存储的,但在打印数组时,通常会使用循环遍历数组的每个元素并打印出来。在打印过程中,每次打印一个元素时,实际上是打印该元素的地址。由于数组是连...
打印数组地址 printf("%p",&arr[0]); // 打印数组0位数据的十六进制地址,用%p。 某个数组前三个位置的数据的地址如下 0000005FBFFEFBE80000005FBFFEFBEC0000005FBFFEFBF00000005FBFFEFBF40000005FBFFEFBF8 //int 的数据是4个字节,数据地址间相差4. 如果打印数组名的地址 = 数组索引0的地址 打印数组大小 print...
/*二维数组地址和大小演示*/#include<stdio.h>intmain() {intarr[3][4] = {0}; printf("arr的地址是%p\n", &arr); printf("arr的地址是%p\n", &arr[0][0]); printf("arr的sizeof大小是%d\n", (int)sizeof(arr)); printf("arr[1]的地址是%p\n", &arr[1]); printf("arr[1]的地址...
* @brief print_array 打印二维数组的值和地址 * @param array */voidprint_array3(int array[][3]){// 循环控制变量int i=0,j=0;printf("\nprint value and address :\n");// 打印 二维数组 值for(i=0;i<2;i++){for(j=0;j<3;j++){printf("array[%d][%d] = %d , address = %d\n...
//指针与数组的打印和地址 int main() { int arr[] = {1,2,3,4,5,6,7,8,9,0}; int* p = arr; int sz = sizeof(arr)/sizeof(arr[0]); int i = 0; for( i = 0 ;i < sz ;i++) { printf("%d",*(p+i)); }
C语言对数组取地址 #include <stdio.h>main() {inta[5] = {1,2,3,4,5}; printf("a=%p\n", a); printf("a=%p\n", &a); printf("a=%p\n", &a+1);int*ptr = (int*)(&a+1); printf("%d %d\n", *(a+1), *(ptr-1));...
arr是指针数组,arr[1]的值是一个地址,这里对应数组名b(数组名表示数组地址的常量)。所以打印输出arr[1]要用%p。而不是%d。include <stdio.h> int main(){ int a[]={10};int b[]={20};int c[]={30};int *arr[]={a,b,c};printf("数组名b表示其数组首地址:%p\n",b[0]);...
我们创建了一个数组arr,第一个printf()语句来打印arr这个数组名,第二个printf()语句来打印数组arr首元素的地址,程序运行结果如下: 我们可以发现两个printf()语句输出的结果是一样的,那么我们就可以得出结论:数组名就是首元素的地址 我们再来看一段代码: ...
我汗!首先,地址不是4位8进制数。地址是16进制数。具体多少位,是内存位宽而定。其次,用%x可以打印出来,结果是地址,这个不需争论,但是这个地址不是严格按照地址格式走的。地址格式是确定位数的,例如0012FF7C。而用%x打印出来的是12ff7c。用%#x打印出来0x12ff7c。么有其他区别。