是從網上看到的乙個例子:
struct s
{int i;
int * p;
void main()
struct s s;
int * p = &s.i;
p[0] = 4;
p[1] = 3;
s.p = p;
s.p[1] = 1;
s.p[0] = 2;
問程式會在哪一行死掉~
解答:程式執行到最後一行就會報出異常,死掉.
具體解答為:
首先需要說明的是結構體s,語句struct s s;系統會給s分配連續的兩個word的空間.
void main()
struct s s;
int * p = &s.i;
p[0] = 4; //s.i = 4;s的第乙個word的空間被寫為4.
p[1] = 3; //p[1]指向的是s.i緊接的乙個word空間,即s.p的指標空間,p[1] = 3;此處已經將指標s.p指向了記憶體0x000003處,這裡是系統的保護記憶體,不允許訪問。如果接著寫s.p[0] = ***x,程式也會死掉。
s.p = p; //此時s.p指向了p,是正常的,s的第二個word空間為p所指向的位址,即s.i的位址。
s.p[1] = 1; //修改了s的第二個word的值,即修改了指標s.p所指向的位址,使其指向了記憶體的0x00000001
s.p[0] = 2; //此處,是要訪問系統記憶體0x00000001,該訪問被禁止,程式當然會死掉。
乙個有趣的問題
今早朋友圈某人以100軟妹幣求助這樣乙個問題 概率論是學的一塌糊塗,但是突然想起類似用蒙特卡洛方法可以模擬出來概率。於是向著這100軟妹幣出發了。但是首先遇到了第乙個問題。陣列b的亂序排列感覺有點棘手。首先的第一反應是 迴圈隨機產生1 100的隨機數,判斷陣列中是否已經有該數,若已存在,則重新生成隨...
乙個有趣的SQL問題。
有朋友近來要我幫忙解決乙個 問題,問題描述 有表,表有3個字段 f1,f2,f3,其中,每個欄位中都可能出現1 9之間的9個數字,現要統計出整個表中1 9各出現的次數。如 f1 f2f311 2123 212在上例中 1 出現了4次,2 出現了4次,3 出現了1次。當然,這個 問題是要求盡可能的用 ...
有趣的乙個mysql問題
同事問道乙個有趣的mysql問題,在乙個有資料的表中,如何修改自增id值從一開始?我的第一反應就是不能無法修改,不能實現。在有表的資料中怎麼能實現自增id值從一開始,邏輯上就行不通。做個試驗 建自增表 mysql create table tb1 id int 11 not null auto in...