#include
//*a是指標變數 a就代表儲存位址
void test1(int *a)
printf("------------------------指標與位址--------------------------\n");
int var = 20; /*實際變數的宣告*/
int *ip; /*指標變數的宣告*/
/*int var = 20;
int ip;
var 等價於 ip
&ip 等價於 &var
&ip 就相當於儲存位址
int var12 = ;
int i, *ptr1;
/* 指標中的陣列位址 var12 預設 第一塊位址
*/ptr1 = var12;
printf("var12 等於 &var12[i] 第一塊位址是 %p\n", var12);
printf("&var12[1] 指定第二塊位址是 %p\n", &var12[1]);
for (i = 0; i < 3; i++)
, };
int(*b)[2];
b = a;
//b = &a[0][0];
//指向位址
//b[0] 相當於 第一行陣列的位址
printf("b儲存值:(指向位址)= %p,%p\n", b[0], (b[0] + 1));
printf("a儲存值:(指向位址)= %p,%p\n", a[0], (a[0] + 1));
//b[0] 相當於 第一行陣列的位址 b[0][0] 相當於 第一行陣列的第乙個值
printf("儲存值:(輸出第一行陣列的位址的值)= %d,%d\n", b[0][0], b[0][1]);
//因為前面加了位址符所以輸出的是 第一行陣列的 各個位址
printf("儲存值:(輸出第一行陣列每個的位址)= %p,%p\n", &b[0][0], &b[0][1]);
//指向陣列的 指標陣列 *b[0] 指向第乙個陣列 預設的是第乙個數
printf("儲存值:(指向陣列的值)= %d,%d\n", *b[0], (*b[0]+1));
printf("儲存值:(指向陣列的值)= %d,%d\n", *b[1], (*b[1]+1));
//printf("u1未呼叫之前 %d \n", u1);
//printf("*u未呼叫之前 %d\n", *u);
//printf("*u1未呼叫之前 %p\n", *(&u1));
u = test2(&h);
printf("*u呼叫之後 %d,位址 %p\n", *u, u);
system("pause");
return 0; }/*
備註32位編譯器
char :1個位元組
char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)
short int : 2個位元組
int: 4個位元組
unsigned int : 4個位元組
float: 4個位元組
double: 8個位元組
long: 4個位元組
long long: 8個位元組
unsigned long: 4個位元組
64位編譯器
char :1個位元組
char*(即指標變數): 8個位元組
short int : 2個位元組
int: 4個位元組
unsigned int : 4個位元組
float: 4個位元組
double: 8個位元組
long: 8個位元組
long long: 8個位元組
unsigned long: 8個位元組
*/
c語言指標詳解
一.指標的概念 指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。1.指標的型別 從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部...
C語言指標詳解
類似於 int p char p 或者自定義型別的 person p struct p 這些都是基本的指標變數,不管什麼型別的指標變數都是乙個存位址的變數,所以它們的大小都是四個位元組 還有一種void p 型別,類似於 js 或者 c 的 var 可以傳入任何型別變數的位址,也可以轉換成任何型別變...
C語言指標詳解
c語言指標應用 一 指標是什麼 指標是乙個特殊的變數,它存的是記憶體裡的乙個位址。指標四要素 1.指標的型別 把指標名字去掉,剩下的部分就是這個指標的型別。這是指標本身所具有的型別如下 1 int p 指標的型別是int 2 char p 指標的型別是char 3 int p 指標的型別是int 4...